我目前正在学习 React 中的钩子概念并试图理解下面的示例。
import { useState } from 'react';
function Example() {
// Declare a new state variable, which we'll call "count"
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
上面的例子增加了处理函数参数本身的计数器。如果我想在事件处理函数中修改计数值怎么办
考虑下面的例子:
setCount = () => {
//how can I modify count value here. Not sure if I can use setState to modify its value
//also I want to modify other state values as well here. How can I do that
}
<button onClick={() => setCount()}>
Click me
</button>
原文由 Hemadri Dasari 发布,翻译遵循 CC BY-SA 4.0 许可协议
React 钩子 是一种新方法(仍在开发中),无需使用类即可访问诸如
state
之类的反应核心功能,在您的示例中,如果您想直接在处理程序函数中增加计数器而不直接在onClick
道具中指定它,您可以执行以下操作:和点击:
让我们快速解释一下这一行发生了什么:
useState(0)
返回一个元组,其中第一个参数count
是计数器的当前状态,而setCounter
是允许我们更新计数器状态的方法。我们可以在任何地方使用setCounter
方法来更新count
的状态——在这种情况下,我们在setCount
函数内部使用它,我们可以做更多的事情;使用钩子的想法是,如果不需要/不需要,我们能够使我们的代码更具功能性并避免 _基于类的组件_。我写了一篇关于钩子的完整文章,其中包含多个示例(包括计数器),例如 这个 codepen ,我使用了
useState
、useEffect
、useContext
和 _自定义钩子_。我可以详细了解钩子在这个答案上的工作原理,但是文档很好地详细解释了 状态钩子 和其他钩子,希望对您有所帮助。更新: Hooks 不再是一个提案,因为 16.8 版它们现在可以使用,React 网站中有一个部分回答了一些 常见问题解答。