我目前正在学习React中的hooks概念,并试图理解下面的示例
从“react”导入{useState};
函数示例(){
//声明一个新的状态变量,我们称之为“count”;
const[count,setCount]=useState(0);
返回(
<;div>;
<;p>;您单击了{count}次<;/p>;
<;按钮onClick={()=>;设置计数(计数+1)}>;
点击我
<;/button>;
<;/div>;
);
}
上面的示例增加处理程序函数参数本身的计数器。如果我想修改事件处理程序函数中的计数值,该怎么办
考虑以下示例:
setCount=()=>;{
//如何在此处修改计数值。不确定是否可以使用setState修改其值
//我还想在这里修改其他状态值。我该怎么做
}
<;按钮onClick={()=>;setCount()}>;
点击我
</按钮>;
React钩子是一种新的方法(仍在开发中),可以访问React的核心功能,如状态,而不必使用类。在您的示例中,如果您希望直接在处理函数中增加计数器,而不直接在onClick属性中指定它,您可以执行以下操作:
。。。
const[count,setCounter]=useState(0);
const[moreStuff,setMoreStuff]=useState(…);
...
常量setCount=()=>;{
设置计数器(计数+1);
setMoreStuff(…);
...
};
和onClick:
<;按钮onClick={setCount}>;
点击我
</按钮>;
让我们快速解释一下这一行发生了什么:
const[count,setCounter]=useState(0);
useState(0)返回一个元组,其中第一个参数count是计数器的当前状态,setCounter是允许我们更新计数器状态的方法。我们可以使用setCounter方法在任何地方更新count的状态-在这种情况下,我们在setCount函数中使用它,在这里我们可以做更多的事情;使用钩子的想法是,如果不希望/需要,我们可以使代码更具功能性,并避免使用基于类的组件
我用多个例子(包括计数器)写了一篇关于钩子的完整文章,比如这个代码笔,我使用了useState,useffect,useContext,以及自定义钩子。我可以更详细地了解钩子是如何在这个答案上工作的,但是文档非常详细地解释了状态钩子和其他钩子,希望能有所帮助
更新:钩子不再是一个建议,因为版本16.8现在可以使用,React的网站上有一个部分回答了一些常见问题