React Native:警告:componentWillReceiveProps 已重命名,不推荐使用。 SwipeOut 组件问题

Posted

技术标签:

【中文标题】React Native:警告:componentWillReceiveProps 已重命名,不推荐使用。 SwipeOut 组件问题【英文标题】:React Native: Warning: componentWillReceiveProps has been renamed, and is not recommended for use. SwipeOut component issue 【发布时间】:2020-06-06 09:57:33 【问题描述】:

我在使用 Swipeout 时收到此警告:

" 警告:componentWillReceiveProps 已重命名,不推荐使用。见

将数据获取代码或副作用移至 componentDidUpdate。 如果您在 props 更改时更新状态,请重构您的代码以使用记忆技术或将其移动到静态 getDerivedStateFromProps。了解更多信息:*** 到 UNSAFE_componentWillReceiveProps 以在非严格模式下抑制此警告。在 React 17.x 中,只有 UNSAFE_ 名称可以使用。要将所有已弃用的生命周期重命名为新名称,您可以在项目源文件夹中运行 npx react-codemod rename-unsafe-lifecycles。 请更新以下组件: Swipeout "

componentWillMount 也是如此。

值得注意的是,使用 npx react-codemod rename-unsafe-lifecycles 无法缓解此错误。

我进入 Swipeout 的代码并手动添加了 UNSAFE_ 但每次我编译代码时,它都会恢复。

我在 GitHub 上打开了该页面的问题,但几天后没有回复。

建议?

谢谢,

【问题讨论】:

在等待更新时,您可以设置一个安装后脚本来复制修改后的文件并替换其在 Swipeout 的node_modules 下的对应文件。 @singamnv 可以在nodemodules下的swipout组件中将componentWillrecieveprops替换为getDerivedstatefromProps 【参考方案1】:

同时,我建议您分叉该项目。进行更改,从依赖项中删除 OG 包并安装您自己的 fork:

npm install <YOUR-GITHUB-USERNAME>/<YOUR-REPO-NAME>

哦,当你在做的时候,如果你有时间,向他们发送一个拉取请求;)

【讨论】:

以上是关于React Native:警告:componentWillReceiveProps 已重命名,不推荐使用。 SwipeOut 组件问题的主要内容,如果未能解决你的问题,请参考以下文章

React Native + react-native-router-flux:<Scene key='modal' component=Modal/> 有啥作用?

React Native 中 component 生命周期

3.React Native在Android中自定义Component和Module

React-Native - 在Component和Class之间传递数据

警告:出于性能原因,此合成事件被重用 React-Native

React Native 中 component 生命周期