当我尝试设置变量时,组件仅在获取完成后更新。这是一个exapmle代码。
class RelayExample extends React.Component {
setVars() {
this.props.relay.setVariables({id: '2'});
};
render() {
console.log(this.props.relay.pendingVariables);
return (
<div>
<button onClick={this.setVars.bind(this)}>set variable</button>
</div>
);
}
}
RelayExample = Relay.createContainer(RelayExample, {
initialVariables: {
id: '1'
},
fragments: {
userStore: ()=> {
return Relay.QL`
fragment on userStore {
user(id:$id){
email
}
}
`;
}
}
});
ReactDOM.render(
<Relay.RootContainer Component={RelayExample} route={new TestQuery()}/>,
document.getElementById('app')
);
即使我在setVariables函数之后立即使用forceUpdate,我也会得到类似的结果。
setVars() {
this.props.relay.setVariables({id: '2'});
this.forceUpdate();
};
答案 0 :(得分:-1)
我认为这是预期的行为。
pendingVariables包含正在使用的变量集 获取新的道具,即this.props.relay.setVariables()或 调用this.props.relay.forceFetch()和相应的请求 在飞行中。
如果没有请求正在进行中,则pendingVariables为null。
如果您在设置变量后立即控制日志,则应在pendingVariables
中看到它们。