Javascript react中的StrictMode是什么?

Javascript react中的StrictMode是什么?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我听说strict模式有助于以最佳实践的方式编写React代码,因为它会对生命周期方法的删除发出警告 我从报纸上读到这件事 我的理解正确吗?严格模式有多有效?是否仅适用于不安全的生命周期方法?如果没有,我可以在功能组件中使用此功能吗 import { StrictMode} from “react”; class Test extends Component{ render( <StrictMode>

我听说strict模式有助于以最佳实践的方式编写React代码,因为它会对生命周期方法的删除发出警告

我从报纸上读到这件事

我的理解正确吗?严格模式有多有效?是否仅适用于不安全的生命周期方法?如果没有,我可以在功能组件中使用此功能吗

  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};
类测试扩展了组件{
渲染(
//其他一些子组件,其中实现了所有生命周期方法
);
}
是一种帮助器组件,可以帮助您编写更好的反应组件,您可以使用
包装一组组件,它基本上可以:

  • 验证内部的组件是否遵循了一些建议的做法,如果不在控制台中,则发出警告
  • 验证不推荐使用的方法是否未被使用,如果使用,严格模式将在控制台中警告您
  • 通过识别潜在风险,帮助您预防一些副作用
正如文档所说,严格模式是面向开发的,所以您不必担心它会影响生产构建

我发现,当我在处理新的代码库时,实现严格模式特别有用,我想看看我面对的是什么样的代码/组件。此外,如果您处于bug搜索模式,有时最好使用
包装您认为可能是问题根源的组件/代码块

所以,是的,你在理解严格模式的正确道路上,坚持下去,我认为当你玩它们时,你会更好地理解其中的一件事,所以继续玩吧,玩得开心

警告:
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,但有时会导致一些奇怪的行为。如果你面临无法解决的奇怪问题,就关掉它。你很棒