在setVariables之后,React relay pendingVariables始终为null

时间:2016-11-21 09:46:14

标签: javascript reactjs graphql relayjs

当我尝试设置变量时,组件仅在获取完成后更新。这是一个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')
);

当我按下按钮时,我在控制台中得到了这个结果: enter image description here

即使我在setVariables函数之后立即使用forceUpdate,我也会得到类似的结果。

setVars() {
        this.props.relay.setVariables({id: '2'});
        this.forceUpdate();
};

enter image description here

1 个答案:

答案 0 :(得分:-1)

我认为这是预期的行为。

  

pendingVariables包含正在使用的变量集   获取新的道具,即this.props.relay.setVariables()或   调用this.props.relay.forceFetch()和相应的请求   在飞行中。

     

如果没有请求正在进行中,则pendingVariables为null。

如果您在设置变量后立即控制日志,则应在pendingVariables中看到它们。