web-dev-qa-db-ja.com

React-nativeライフサイクルメソッドの警告:「componentWillReceivePropsは非推奨であり、次のメジャーバージョンで削除されます」

反応ネイティブでライフサイクルメソッドを使用しているときに、コンソールとエミュレータで次の警告メッセージが表示されました。

警告:componentWillReceivePropsは非推奨であり、次のメジャーバージョンで削除される予定です。代わりに静的getDerivedStateFromPropsを使用してください。

警告:componentWillMountは非推奨であり、次のメジャーバージョンで削除される予定です。代わりにcomponentDidMountを使用してください。一時的な回避策として、UNSAFE_componentWillMountに名前を変更できます。

警告は、次のようにエミュレータで迷惑に表示されます。 Warning messages in the Emulator

エミュレータで警告メッセージを閉じると問題が発生し、アプリケーションがクラッシュするため、アプリケーションを再起動する必要があります。これについて私は何ができますか?

また、警告メッセージにもかかわらず、「componentWillReceiveProps」メソッドを使用したことはありません。ただし、「componentWillMount」メソッドを使用しました。メソッド "componentWillReceiveProps"に関連しても警告メッセージが表示される原因は何ですか?

9
Sarun Dahal

私はそれがあなたのアプリケーションに影響を与えないと思います、それは単に迷惑です。

以下をindex.jsに追加して非表示にします。

import { YellowBox } from 'react-native';

YellowBox.ignoreWarnings([
  'Warning: componentWillMount is deprecated',
  'Warning: componentWillReceiveProps is deprecated',
  'Module RCTImageLoader requires',
]);
19
Nho Huynh

これらの廃止の通知は、React Native 0.54の土地に起因するものではありませんでしたが、誤ってReact Nativeを0.54.1にアップグレードすると、これらのメッセージがなくなった。

続きを読む こちら

2
Sam Pettersson

交換するだけ

componentWillReceiveProps(nextProps) { ... }

static getDerivedStateFromProps(nextProps, prevState) { ... }

現在の状態としてprevStateを使用します。

このメソッドは状態を更新する場合はオブジェクトを返し、何も更新しない場合はnullを返し、コンポーネントインスタンスにアクセスできないことを忘れないでください。 reduxのようなもの。参照してください this

0
Ali Abdollahi