2016-02-24 4 views
1

Я передаю реквизит и функцию на вторую страницу навигатора следующим образом:Реагировать Родные реквизит не обновляя с навигатором

unlock: function(object) { 
    switch(true) { 
    case (object==0): this.setState({a: false});break; 
    case (object==1): this.setState({b: false});break; 
    case (object==2): this.setState({c: false});break; 
    case (object==3): this.setState({d: false});break; 
    default: this.setState({e: false});break;} 
    }, 

Затем проходит реквизит через навигатор:

this.props.navigator.push({ 
     title: title, 
     component: component, 
     passProps: {unlock: this.unlock,a: this.state.a, b:  this.state.b,c: this.state.c,d: this.state.d, e: this.state.e} 
    }); 

Но когда я вызываю функцию на второй странице навигатора, она обновляется нормально, но только на домашней странице. Информация на этой второй странице навигатора не обновляется, пока я остаюсь на странице. Так, например, этот код:

<Text>{this.props.a}</Text? 

Показывает значение до активации функции на второй странице. Мне нужно вернуться на главную страницу, а затем снова вернуться ко второй странице, чтобы увидеть обновленное значение. Это похоже на навигатор. С помощью любого другого метода он мгновенно обновляется.

Единственное обходное решение, которое у меня было, состояло в том, чтобы установить состояние на второй странице, а также настроить реквизиты для главной страницы. Тем не менее, это кажется немного ненужным обходным решением.

+0

Если вам нужно разделить состояние между компонентами, я бы предложил использовать контейнер потока, например, alt js. http://alt.js.org/, у меня была та же проблема, что и контейнер для флюсов. –

+0

Используете ли вы React.createClass или React.Component? И вы определили какие-либо PropTypes? – BigPun86

+0

Нет, я ничего особенного не делал, я думал, что это нормальная функциональность. его React.createClass. Он просто обновляет значение с помощью переданной функции, такой как this.props.unlock на второй странице навигатора. Но указанное значение не изменяется до возврата на домашнюю страницу, а затем снова возвращается на вторую страницу. – Hasen

ответ

0

Вы вызываете функцию разблокировки в следующем компоненте? Пока вы не назовете это, он не будет устанавливать состояние этого основного компонента, так как функция разблокировки находится в основном компоненте, она будет вызвана только на главный компонент, я думаю, что ваша проблема.

+0

Да, как указано в моем описании: «Но когда я вызываю функцию на второй странице навигатора ...» – Hasen