私は反応について何かを理解しようとしており、より良いやり方を考えたいと思っています。レンダリングとライフサイクルメソッドの反応計算の比較
基本的には、入ってくる小道具に対していくつかの変換/計算を行いたいと思っています。私はイベントベースの状態変化を現在制限していますが、将来変化する可能性があります。基本的には、これらの計算をレンダリング、またはcomponentWillMountとcomponentWillReceivePropsで行い、状態を設定する方が良いでしょうか?
例をレンダリング中:
render() {
var url = this.getUrl() // get url transforms some props into a valid url
var something = this.getSomething() // etc etc
return <a href={url}>{something}</a>
}
レンダリングの外:
componentWillMount() {
this._checkAndSetUrl(this.getUrl(this.props.data));
},
componentWillReceiveProps(nextProps) {
const currentGivenUrl = this._getUrl(this.props.data)
const nextGivenUrl = this._getUrl(nextProps.data)
if (currentGivenUrl !== nextGivenUrl) {
this._checkAndSetUrl(nextGivenUrl);
}
},
_checkAndSetUrl(url) {
// check validity and do some stuff to url
url = "new url"
something = this.getSomething()
this.setState({url: url, something: something})
}
私の思考は、あなたは物事があるときにのみ、すべてのレンダリングに対して計算を行わないため、2番目の方法の方が良いですかわった。これを行うにはどうしたらいいですか?
を参照してくださいはい、一般的にあなたが状態に計算されたデータを入れて、代わりにレンダリングでそれを再計算しないことをお勧めします。 https://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html#what-shouldnt-go-in-state – Brandon
を参照してください。また、 'componentWillReceiveProps()'ライフサイクル固有の物事のみ:現在の 'this.props'と次の小道具が必要な場所、または新しい小道具に基づいて状態を更新する必要がある場所。 – wintvelt