浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【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を

使ってください!!

  • この記事いいね! (0)