首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Relay执行类型强制?

如何使用Relay执行类型强制?
EN

Stack Overflow用户
提问于 2016-12-04 10:21:36
回答 1查看 47关注 0票数 0

例如,中继是否能够知道字段应该是Date,并将该值从string转换为Date?有没有一个地方可以放置这种逻辑?

EN

回答 1

Stack Overflow用户

发布于 2017-04-18 23:21:24

也许,这取决于您希望转换发生在哪里。

如果它是一个变量,Relay容器有一个接受函数的prepareVariables属性。不过,我怀疑这就是您想要的,因为您不能(afaik)将Date对象作为变量传递。如果是这样的话,下面是一个adapted from the docs:示例

代码语言:javascript
复制
module.exports = Relay.createContainer(ProfilePicture, {
  initialVariables: {size: 5},
  prepareVariables: prevVariables => {
    return {
      ...prevVariables,
      size: typeof prevVariables.size === 'number'? * prevVariables.size : Number(prevVariables.size),
    };
  },
});

如果您希望强制执行Relay容器的输出,则必须在使用该属性的组件中执行此操作,或者在更高级别的组件中执行此操作。下面是使用最高级recompose (以及同一作者的recompose relay-container )的相同示例:

代码语言:javascript
复制
export default compose(
  createContainer({
      fragments: {
        widget: () => Relay.QL`
          fragment on Widget {
            myDate
          }`
      }
  }),
  withProps(props => ({myDate: props.widget.myDate instanceof myDate ? props.widget.myDate : new Date(props.widget.myDate)}))
)(ProfilePicture)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40954715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档