回答:
私はAngularを使用していませんが、上記のリンクを読んでいると、処理する必要のない何かをコーディングしようとしているようです。(this.setState()を介して)Reactコンポーネント階層の状態を変更すると、Reactによってコンポーネントが再レンダリングされます(変更を効果的に「聞く」)。階層内の別のコンポーネントから「リッスン」する場合は、2つのオプションがあります。
状態が変化すると、次のライフサイクルメソッドが呼び出されます。提供された引数と現在の状態を使用して、意味のある何かが変更されたかどうかを判断できます。
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object prevProps, object prevState)
componentDidUpdate
してコンポーネントを追加することが適切な処方でした。これをありがとう。
componentWillUpdate
廃止予定:reactjs.org/blog/2018/03/27/update-on-async-rendering.html
componentDidUpdate
必ずしもちょうどその時の状態が変化し、新しい小道具を受けていないときにも、火災?
componentWillUpdate
廃止予定です。
更新時にコンポーネントの更新をトリガーする必要がある入力プロパティがある場合、コンポーネントのライフサイクルの下を使用する必要があると思います。レンダリングの前に呼び出され、コンポーネントの状態を更新して、ビューに反映されます。
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
で2019年16.8に反応するのでuseStateとuseEffectフック、次は(単純な場合には)今同等です。
AngularJS:
$scope.name = 'misko'
$scope.$watch('name', getSearchResults)
<input ng-model="name" />
反応:
const [name, setName] = useState('misko')
useEffect(getSearchResults, [name])
<input value={name} onChange={e => setName(e.target.value)} />
しばらく経ちましたが、今後の参考のために、メソッドshouldComponentUpdate()を使用できます。
更新は、小道具または状態の変更によって引き起こされる可能性があります。これらのメソッドは、コンポーネントが再レンダリングされるときに次の順序で呼び出されます。
static getDerivedStateFromProps()
shouldComponentUpdate()
render()
getSnapshotBeforeUpdate()
componentDidUpdate()
shouldComponentUpdate
ため、この使用例には適さない可能性があります。