2016-11-21 3 views
3

Когда я пытаюсь установить переменную, компонент обновляется только после завершения выборки. Вот код exapmle.React relay pendingVariables всегда null после setVariables

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

Даже если я использую forceUpdate сразу после функции setVariables, я получить аналогичный результат.

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

enter image description here

+0

Окружающая среда - Relay.Store –

ответ

-1

Я считаю, что это предназначено поведение.

pendingVariables содержит набор переменных, которые используются для извлечения нового реквизита, то есть, когда this.props.relay.setVariables() или this.props.relay.forceFetch() называется и соответствующее запрос в полете.

Если запрос не находится в полете, ожидающий переменные - null.

Если вы заблокируете журнал сразу после установки переменных, вы должны увидеть их в pendingVariables.

+0

, если я не ошибаюсь, в соответствии с [this] (https://facebook.github.io/relay/docs/api-reference-relay-container.html#pendingvariables) пример компонент должен обновлять после setVariables, и ожидающие переменные должны быть выполнены. –

+1

Это не намеренное поведение. Здесь есть такая же проблема. – whitep4nther