APIからデータを読み込むreact.js
アプリには、一連の質問(textboxes
、radiolist
、checkboxes
など)が表示されています。ユーザーはそれらを入力し、すべての回答をAPIに提出し、APIは新しい質問を送信します。子レスキューコンポーネントの状態をリセットする方法
これらの質問はすべて単一のオブジェクトになっていますので、私はstateの現在の質問セットを保持するparent react.jsコンポーネントを作成しました。状態が変わると、以下の各質問が再現されます。これはかなりうまく動作します。
問題は、正確に同じ質問を連続して2回表示することがありますが、これはstateおよびreact.jsに保持されているため完全に新しいコンポーネントをレンダリングする必要がないことを知るのに十分です古いものがいくつかの小さな更新を加えて行うためです。
問題は、最初にcomponentDidMountで設定された子コンポーネントの状態に格納されている初期データに基づいてラジオボタンを選択した場合です。しかし、第二の質問が来るとき、それは本質的に同じ構成要素なので、状態が残る。コンストラクタは再度呼び出されません。
私は多分、他のイベントのいずれかを使用する必要があると思う:
componentWillReceiveProps
componentWillMount
componentWillUpdate
が、私はどちら把握することはできません最も一貫性のあるもの。
基本的には、親がAPIから新しいデータを受け取り、本質的にすべての子コンポーネントを再レンダリングする(ただし、反応しないようにする)たびにselectedAnswer
をリセットします。
編集は
私はそれを再作成または再するかどうかを決めることができますので、私は、コンポーネントの中に小道具の異なるセットを渡すことができるかどうか、内部のライフサイクルイベントを経て、これをリセットしようとするのではなく、疑問に思います通常の方法でレンダリングします。
'React 'に伝えるコンポーネントの' key'を変更すると、それは*別のコンポーネントになります。 – Sulthan