2017-11-27 14 views
1

私はこのプロジェクトでReactを使用しています。(React)状態変更後にsetState()コールバックが起動しない

(コールバックを使用して)設定した直後に状態を読み取る必要がありますが、コールバックを使用して画面に状態を出力すると、以前の状態の値が取得されます。 devtoolsを使うと、状態が変わっているのが分かります。問題はありません。私はドキュメントを見て、それは状態が変更され、コンポーネントが更新された後にコールバックが発生すると言われましたが、私のコンポーネントでその動作が見られません。エラーメッセージも表示されません。

ここにコードがあります。ありがとうございます!

onAnswerSelect = (e) => { 
    const selectedAnswer = e.target.value; 
    //Set the state, then simulate a click on the submit button 
    this.setState(() => ({selectedAnswer}), this.simulateClick(e)) 
    } 

simulateClick = (e) => { 
    console.log(this.state.selectedAnswer) 
    e.target.parentNode.parentNode.firstChild.click() 
    } 

答えて

5

setStateコールバックに関数を渡すのではなく、呼び出します。あなたは他の方法がclosureを使用することです。この

this.setState(() => ({selectedAnswer}), this.simulateClick.bind(this,e)) 

ようbind機能を使用して機能し、パラメータを渡すことができます。あなたはこの

simulateClick = (e) =>() => { 
    console.log(this.state.selectedAnswer) 
    e.target.parentNode.parentNode.firstChild.click() 
    } 

this.setState(() => ({selectedAnswer}), this.simulateClick(e)) 
+1

おかげのような機能を返すようにsimulateClick機能を作ることができ、あなたのソリューションを働きました!私はこれを見て、あまりにも多くの時間をwaaay過ごしました。コールバックにイベントをバインドできるようにe.persist()を呼び出さなければなりませんでした。私はそれを見なかったとは信じられない、もう一度ありがとう! – trinhmatt

関連する問題