Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用React中的挂钩预初始化状态?_Javascript_Reactjs_React Native_React Hooks - Fatal编程技术网

Javascript 如何使用React中的挂钩预初始化状态?

Javascript 如何使用React中的挂钩预初始化状态?,javascript,reactjs,react-native,react-hooks,Javascript,Reactjs,React Native,React Hooks,基本上,在类组件中,我们使用如下初始值预先初始化构造函数中的状态 constructor(props){ super(props); this.state = { count: 0 } } 但是在引入钩子之后,所有类组件都变成了具有状态的功能组件 但我的问题是如何在React v16.7.0中使用钩子将计数状态预初始化为0 文档中的示例显示: const [count, setC

基本上,在类组件中,我们使用如下初始值预先初始化构造函数中的状态

     constructor(props){
          super(props);
          this.state = {
                 count: 0
          }
     }
但是在引入钩子之后,所有类组件都变成了具有状态的功能组件

但我的问题是如何在React v16.7.0中使用钩子将计数状态预初始化为0

文档中的示例显示:

const [count, setCount] = useState(0);

传递给useState的参数(例如本例中的“0”)是初始值。

根据React文档,您可以将初始值传递给useState钩子

const [state, setState] = useState(initialState);

下面是一个示例,说明了类和函数中的状态是如何通过钩子初始化的:

基本上,
useState()
的第一个参数是初始状态

类反类扩展了React.Component{
建造师(道具){
超级(道具);
this.state={count:0};
}
render(){
返回
类别:
计数:{this.state.Count}
这个.setState({
计数:this.state.count+1
})}>增加
;
}
}
函数反函数(){
const[count,setCount]=React.useState(0);//此处为初始状态。
返回(
功能:
计数:{Count}
setCount(计数+1)}
>增加
);
}
ReactDOM.render(

,document.querySelector(“#app”)
如果要在加载数据(从api获取数据)后设置初始状态,可以在React钩子中使用“useEffect”。它等于类组件中的“componentWillReceiveProps”。所以,当您在useEffect中设置状态值时,请确保避免无限循环

const [count,setcount] = useState(0) 

 useEffect(()=>{
    setcount(api.data.count) // api.data.count from api after update store
  },[])

如果我想初始化20个不同的状态变量呢?我是否需要使用useState(0,“test”,23,“male”,等等)?如果希望它们是独立的状态变量,那么可以为每个变量调用一次“useState”(请参阅同一文档页面的“使用多个状态变量”部分)。或者,您可以让状态变量成为具有您想要的任何结构的对象(例如useState({count:0,gender:“male”})。如果我想初始化大约20个不同的状态变量,该怎么办?我是否需要使用useState(0,“test”,23,“male”;?您应该为每个变量声明它。谢谢。您能帮助我理解,如果我有一个以上的状态字符串变量,并且我想用初始值和计数对其进行预初始化,那么会发生什么情况。如何使用useState预初始化多个变量?是的,您可以在组件中拥有任意数量的
useState
如果它太多,你可以使用一个
useState
和一个对象作为值。请参阅此链接以获取示例-你可以就此提出另一个问题,我可以在那里回答。