Javascript 变量在Relay.setVariables之后未定义
我有一个根容器,它有一些Javascript 变量在Relay.setVariables之后未定义,javascript,reactjs,fragment,relay,Javascript,Reactjs,Fragment,Relay,我有一个根容器,它有一些关系变量: export default Relay.createContainer(UsageView, { initialVariables: { start: null, end: null, }, fragments: { viewer: ({ start, end }) => Relay.QL` fragment on viewer { ${ProductList.getFragment('v
关系变量
:
export default Relay.createContainer(UsageView, {
initialVariables: {
start: null,
end: null,
},
fragments: {
viewer: ({ start, end }) => Relay.QL`
fragment on viewer {
${ProductList.getFragment('viewer', { start, end })}
}
`,
},
});
这些变量被传递到ProductList
组件,并在其片段中使用:
export default Relay.createContainer(Component, {
initialVariables: {
start: null,
end: null,
},
fragments: {
viewer: ({ start, end }) => Relay.QL`
fragment on viewer {
id
organization {
createdAt
products (start: $start, end: $end) {
name
usageTotal
${ProductListItem.getFragment('data', { start, end })}
}
}
}
`,
},
});
如您所见,这些信息随后被传递到另一个组件ProductListItem
第一次加载页面时,所有数据都会被提取、加载并呈现得很好。我有一个下拉列表,允许用户更改开始和结束值,然后调用父容器中的中继。setVariables
:
setDateRange = ({ start, end }) => {
this.props.relay.setVariables({
start,
end,
}, (state) => {
console.log('READYSTATE CHANGE', state);
});
}
调用此函数时,调用onReadyStateChange
4次,消息顺序如下:
未定义
,导致所有内容都中断
我似乎不明白为什么会发生这种情况,因为
setVariables
中设置为start和end的值是有效的。我意识到我没有正确使用setDateRange
函数的输入——它被传递了一个JSON字符串,需要进行解析。不幸的是,从中继请求中无法判断这就是问题所在