【cordova-react】componentWillReceivePropsが廃止になっていた話

componentWillReceivePropsというライフサイクルメソッドは最新のstateを受け取って更新することができ、前のページで受け取った値を

上書きしてstateに設定することができるメソッドです。

自分はselectタグで何も入力せずに次のページに進む、つまりデフォルトの値を最新の状態で受け取りたかったので

使っていたのですがずいぶん前に廃止するって決められていたみたいです。

Reactはv16まではこれまでのバージョンとほぼ同じ動きをするように決められていたのですが

v17になってからはRender Phaseという実装がrenderする度に何度も呼ばれ、これがループのようにぐるぐる回ってしまうため

危険視されているみたいですね・・・。

 

render部分がループすれば当然コンポーネントでバグがわんさかでて保守性が著しく落ちてしまうので使うのを避けてくださいなので

代わりにcomponentDidUpdateかUNSAFE_componentWillReceivePropsに置き換えてねという記事を見かけたので

後者のUNSAFE_componentWillReceivePropを使うことにしました。

 

どちらもprop・state共にrenderに影響を及ぼすことなくsetStateできるので値を遷移する前に更新したい

もしくは他の関数の影響を受けないように最後にstateの更新をしたいというかたは今使っているcomponentWillReceiveProps

を避けて上のどちらかに切り替えれば安牌なのかなぁと感じました。

※componentDidUpdateでthis.stateすると、無限にstateし続けることを知ったのでUNSAFE_componentWillReceivePropを

使ってください!!

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG