私のコードでは私はcomponentWillMount
の明示的な使用を持っていませんが、それでもwebpack
を実行するときにいくつかの警告を見ています。
react-dom.development.js:12386警告:ComponentWillMountは名前が変更されており、使用にはお勧めできません。詳細については、https:/fb.me/react-unsafe-component-lifecyclesを参照してください。
- コードをComponentDIDMountに副作用で移動し、コンストラクタに初期状態を設定します。
- ComponentWillMountをUnsafe_ComponentWillMountに変更して、この警告は非厳密モードで抑制します。 React 17.xでは、Unsafe_ nameのみが機能します。廃止予定のライフサイクルを新しい名前に変更するには、プロジェクトのソースフォルダに
npx react-codemod rename-unsafe-lifecycles
を実行できます。次のコンポーネントを更新してください:Foo、Bar
私は提案されたnpx react-codemod rename-unsafe-lifecycles
を実行しましたが、警告は消えませんでしたが、その表現だけを変更しました。
react-dom.development.js:12386警告:ComponentWillMountは名前が変更されており、使用にはお勧めできません。 [...]
ここで、foo
とbar
も、私たちのチームが書いたカスタムコンポーネント、および外部ライブラリのいくつかのコンポーネントです。 componentWillMount
dooeseのためのVisual Studioソリューションを完全に検索すると、結果を教えてください。誰かが私に何が間違っていたことができることを教えてください。
私は読みました 別の質問 述べたコメント
私は
componentWillMount
と明示的な場所を持っていないが、私は持っていない[...]state={ tabindex:0 }
とコンストラクタの後のコードの行がどのようにコンストラクタにそのI「移動」のか?
答えはconstructor(props) {super(props); this.state = { tabindex:0 }}
を書くことでした。誰かがここで何が起こっていたのか説明してください。コードではどのようなパターンを探す必要がありますか?
printWarning @ react-dom.development.js:12386
lowPriorityWarningWithoutStack @ react-dom.development.js:12407
./node_modules/react-dom/cjs/react-dom.development.js.ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings @ react-dom.development.js:12577
flushRenderPhaseStrictModeWarningsInDEV @ react-dom.development.js:25641
commitRootImpl @ react-dom.development.js:24871
unstable_runWithPriority @ scheduler.development.js:815
runWithPriority$2 @ react-dom.development.js:12188
commitRoot @ react-dom.development.js:24865
finishSyncRender @ react-dom.development.js:24251
performSyncWorkOnRoot @ react-dom.development.js:24223
scheduleUpdateOnFiber @ react-dom.development.js:23590
scheduleRootUpdate @ react-dom.development.js:26945
updateContainerAtExpirationTime @ react-dom.development.js:26973
updateContainer @ react-dom.development.js:27075
(anonymous) @ react-dom.development.js:27663
unbatchedUpdates @ react-dom.development.js:24375
legacyRenderSubtreeIntoContainer @ react-dom.development.js:27662
render @ react-dom.development.js:27756
./src/index.tsx @ index.tsx:52
__webpack_require__ @ bootstrap:19
0 @ bundle.js:152632
__webpack_require__ @ bootstrap:19
(anonymous) @ bootstrap:83
(anonymous) @ bootstrap:83
これらのメソッドを使用したい場合は、では解析_でメソッドを付けます。 Reactチームが将来のバージョンのReactにバグを持つ可能性が高いため、これらのメソッドに依存するコードを期待しているため、これらの方法は「危険」と見なされます。そのため、UNSAFE_COMPONENTWILLMOUNTで警告を抑制できます。
ComponentWillMountまたはComponentWillReceivePropsのようなすべての廃止予定ライフサイクルの名前を新しい名前に変更したい場合は、プロジェクトのソースフォルダのnpx react-codemod rename-unsafe-lifecycles
を実行できます。