42175


初めまして。  
お世話になります。

React Nativeのことで質問です。  
React-Native-
cliを利用してプロジェクトを作成したのですが、package.json内のreactのバージョンが^16.3.0-alpha.1となってしまっている影響か、次のようなWarningが出るようになりました。

> Warning: componentWillReceiveProps is deprecated and will be removed  
>  in the next major version. Use static getDerivedStateFromProps  
>  instead.  
>  Warning: componentWillMount is deprecated and will be removed in the next
> major version. Use componentDidMount instead. As a temporary  
>  workaround, you can rename to UNSAFE_componentWillMount.

Warningの内容は、ライフサイクルで使用される関数が変わるので変更するように、とのことですが、npmを利用すればいいのかどうしていいのか全くわかりません。  
これらのWarningを解決する方法をGoogle等で検索してみたのですが、自分では見つけることができませんでした。

もし解決方法をご存知であれば、ご教授くださると大変助かります。

どうぞよろしくお願いします。


CC BY-SA 3.0
2018-03-02T10:02:29.093
42094
2018-03-06T14:40:55.193
27594
question
reactjs react-native
react nativeでコンポーネントのアップデートの仕方について教えてください。


まだ新しいので情報が少ないですね。自分も探り探り使っています。  
[What’s new in React 16.3(.0-alpha)](https://medium.com/@baphemot/whats-new-
in-react-16-3-d2c9b7b6193b "What’s new in React 16.3\(.0-alpha\)") によると、

  * `componentWillMount` は `componentDidMount` に変更
  * `componentWillUpdate` は `componentDidUpdate` に変更
  * `componentWillReceiveProps` は新たに追加された `static getDerivedStateFromProps` を使う

のが良いようです。特にnpmの追加は要りません。

プロジェクトを新規作成されたとのことなので、上記の通り対応していけば良いでしょう。  
既存のプロジェクトの場合、これに対応しようとすると、影響範囲が大きすぎるので、しばらくは対応せず様子見でも良いかもしれません。  
16.3の正式リリース時に経緯の詳細や対策が発表されるのではないかと思います。

Warningにもある通り、メジャーバージョンが16のあいだは`componentWillMount`等がそのまま使えます。大量のWarningが気になるようであれば、頭に`UNSAFE_`を付けて、`UNSAFE_componentWillMount`等を使うことで、Warningを出なくすることもできるようです。


CC BY-SA 3.0
2018-03-06T14:40:55.193
42175
2018-03-06T14:40:55.193
27624
42094
answer