React项目Redux-Form初始化值触发UNSAFE_componentWillMount警告如何解决?
警告产生原因
这个警告与你编写的表单初始化逻辑无关,完全是redux-form@8.3.7本身的遗留问题:该版本内部实现仍然依赖UNSAFE_componentWillMount等已被标记为不安全的生命周期钩子,在React 16.3+版本的严格模式(被<React.StrictMode>包裹的组件树)下就会触发对应警告。你当前的Redux store取数初始化表单的代码是完全符合官方推荐规范的,不需要调整。
无需修改源码的解决方案
- 方案1:迁移到官方推荐替代库
Redux Form已经停止正式维护,原作者官方推荐迁移到React Final Form,该库API设计与Redux Form高度相似,没有生命周期兼容问题,完美适配React17/18,迁移成本极低,是长期使用的最优选择。 - 方案2:关闭严格模式
如果你暂时无法更换库,可将使用Redux Form的组件移出<React.StrictMode>的包裹范围,或者临时关闭全局严格模式,警告会直接消失。该方案的副作用是会失去严格模式提供的其他代码规范检查能力。 - 方案3:使用Redux Form v9 alpha版本
你可以安装redux-form@9.0.0-alpha.1版本,该版本已经重构了内部生命周期实现,移除了所有不安全钩子,不会触发该警告。但需要注意该版本是未正式发布的alpha测试版,需要自行评估业务适配的稳定性。
内容的提问来源于stack exchange,提问作者John Bustos
相关产品推荐
相关产品推荐

