Javascript react中的StrictMode是什么?
我听说strict模式有助于以最佳实践的方式编写React代码,因为它会对生命周期方法的删除发出警告 我从报纸上读到这件事 我的理解正确吗?严格模式有多有效?是否仅适用于不安全的生命周期方法?如果没有,我可以在功能组件中使用此功能吗Javascript react中的StrictMode是什么?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我听说strict模式有助于以最佳实践的方式编写React代码,因为它会对生命周期方法的删除发出警告 我从报纸上读到这件事 我的理解正确吗?严格模式有多有效?是否仅适用于不安全的生命周期方法?如果没有,我可以在功能组件中使用此功能吗 import { StrictMode} from “react”; class Test extends Component{ render( <StrictMode>
import { StrictMode} from “react”;
class Test extends Component{
render(
<StrictMode>
//Some other child component which has all lifecycle methods implemented in it
</StrictMode>
);
}
从“react”导入{StrictMode};
类测试扩展了组件{
渲染(
//其他一些子组件,其中实现了所有生命周期方法
);
}
是一种帮助器组件,可以帮助您编写更好的反应组件,您可以使用
包装一组组件,它基本上可以:
- 验证内部的组件是否遵循了一些建议的做法,如果不在控制台中,则发出警告
- 验证不推荐使用的方法是否未被使用,如果使用,严格模式将在控制台中警告您
- 通过识别潜在风险,帮助您预防一些副作用李>
包装您认为可能是问题根源的组件/代码块
所以,是的,你在理解严格模式的正确道路上,坚持下去,我认为当你玩它们时,你会更好地理解其中的一件事,所以继续玩吧,玩得开心
警告:StrictMode
仅在开发时渲染组件两次
模式不是生产
例如,如果您正在使用getDerivedStateFromProps
这样的方法
static getDerivedStateFromProps(nextProps, prevState){// it will call twice
if(prevState.name !== nextProps.name){
console.log(`PrevState: ${prevState.name} + nextProps: ${nextProps.name}`)
return { name: nextProps.name }
}
return {}
}
getDerivedStateFromProps
方法将调用两次
为了让您知道这不是问题,这只是因为您正在使用index.js
文件中的
包装您的主要组件
StrictMode
渲染组件两次,以便检测代码中的任何问题并向您发出警告。是否最好将其添加到应用程序的根目录中?而不是个人components@AbhinavSingi这取决于您的用例,如果您不想覆盖某些组件(出于任何原因),您可以在多个位置添加strict模式,并将这些组件保留在层次结构中,否则,考虑在根级别添加以覆盖所有组件。我们将所有应用程序封装在<代码> <代码>中,以捕捉所有问题。这在当今非常现实,因为我们必须避免使用大量不推荐的生命周期方法。但是请注意,
会导致阿波罗出现问题,因为它会两次调用副作用;它允许
捕获bug,但有时会导致一些奇怪的行为。如果你面临无法解决的奇怪问题,就关掉它。你很棒