【发布时间】:2017-04-18 16:37:34
【问题描述】:
relay 是否能够知道字段应该是 Date,例如,并将该值从 string 转换为 Date?有没有地方可以放这种逻辑?
【问题讨论】:
-
我认为这应该通过查询的
resolve函数来完成
relay 是否能够知道字段应该是 Date,例如,并将该值从 string 转换为 Date?有没有地方可以放这种逻辑?
【问题讨论】:
resolve函数来完成
也许,这取决于您希望转换发生的位置。
如果它是一个变量,Relay 容器有一个 prepareVariables 支持函数。不过,我怀疑这就是您所追求的,因为您不能(afaik)将Date 对象作为var 传递。如果是这样的话,
不过,这里有一个例子adapted from the docs:
module.exports = Relay.createContainer(ProfilePicture, {
initialVariables: {size: 5},
prepareVariables: prevVariables => {
return {
...prevVariables,
size: typeof prevVariables.size === 'number'? * prevVariables.size : Number(prevVariables.size),
};
},
});
如果您希望强制输出 Relay 容器,则必须在使用 props 的组件中或在高阶组件中执行此操作。这是使用最高级recompose(以及同一作者的recompose relay-container)的相同示例:
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)
【讨论】: