場合に変更された値を反映していません。
値が更新されなかった理由は、コンポーネントがまだ再レンダリングされていないためです。
このような機能が必要な場合は、componentDidUpdate
コールバックを使用する必要があります。
ライフサイクルメソッドhereを参照してください。
EXPLANATION:、2のいずれかの変化がトリガされた場合
各コンポーネントはexternal props
+ internal state
の関数である:ここで
は、作品をどのように反応するかでありますコンポーネントは再レンダリングのためにキューに入れられます(クライアントアプリケーションがブロックされないように非同期です)。
操作の正確な順序については上のリンクを参照してくださいが、ここでは少し概念の証明です。確かに
import React from 'react';
class Example extends React.Component {
constructor(props, context) {
super(props, context);
// initial state
this.state = {
clicked: false
};
}
componentDidUpdate(prevProps, prevState) {
console.log(this.state.clicked); // this will show "true"
}
render() {
return (
<button
onClick={() => {
this.setState({clicked: true});
}}
>
</button>
);
}
}
'setState'が非同期動作です。あなたはおそらくこれを行う必要はありません、そうですか? – azium
はいそれはありますが、すぐには機能しません。このためには、linkstate mixinが必要です。しかし、まだ動作していません –
確かに私はあなたがあなたがあなたが問題を抱えていた実際のコードを投稿しなかったかもしれないことをあなたが空文字列かどうかを知るために 'shares'が真であるかどうかをチェックできると。 – azium