2016-11-21 2 views
2

У меня есть форма, на которой есть кнопка отправки. Эта форма вызывает функцию onclick, которая устанавливает состояние чего-то с false на true. Затем я хочу передать это состояние родительскому объекту, так что, если это правда, он отображает компонент A, но если он ложный, он отображает компонентB.Как передать состояние обратно родителям в React?

Как бы я мог это сделать? Я знаю, что мне нужно использовать состояние или реквизит, но не знаю, как это сделать. также это противоречит принципу одностороннего течения реакции?

код Componenta:

<form onSubmit={this.handleClick}> 


handleClick(event) { 
    this.setState({ decisionPage: true }); 
    event.preventDefault(); 
    }; 

Родитель компонент, который управляет тем, что он отображает:

return (
     <div> 
     {this.props.decisionPage ? 
     <div> 
      <LoginPage /> 
     </div> 
     : 
     <div> 
      <Decision showThanks={this.props.showThanks}/> 
     </div> 
     } 
     </div> 
    ) 

ответ

7

Move handleClick родителю и передать его компоненту ребенка в качестве опоры.

<LoginPage handleClick={this.handleClick.bind(this)}/> 

Теперь в компоненте ребенка:

<form onSubmit={this.props.handleClick}> 

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

<LoginPage handleClick={this.handleClick.bind(this)} decisionPage={this.state.decisionPage}/> 
+0

вы пропустите кронштейн после этого;) –

+0

Спасибо, @LeonardLepadatu –

+1

Хорошего ответа :) Я бы также рекомендовал Аскер вопрос гласит [Подъемное State Up] (https://facebook.github.io /react/docs/lifting-state-up.html) и [Мышление в реале] (https://facebook.github.io/react/docs/thinking-in-react.html) из официальных документов для получения дополнительной информации о рассуждения о том, как делать это таким образом. –