reactjs - 你可以在单个功能组件中多次调用 React 的 useState 和 useCallback 吗?如果是这样,它是如何工作的?
问题描述
我在 React 官方文档或 blagosphere 上还没有找到任何提及这一点。
我认为当你有多个状态变量时,你可以而且通常应该这样做:
function MyComponent() {
const [foo, setFoo] = useState(0);
const [bar, setBar] = useState(1);
return (
<div>
<div onClick={() => setFoo(foo+1)}>{foo}</div>
<div onClick={() => setBar(bar+1)}>{bar}</div>
</div>
);
}
这是允许和鼓励的,而不是使用一个包含字段和useState
的无所不包的对象调用一次?如果允许并鼓励它,如何知道它何时被调用是指已经存储还是已经存储?state
foo
bar
useState
foo
bar
我也有基本相同的问题useCallback
。我想知道,如果我useCallback
在同一个组件中调用两次以创建两个不同的回调,如何useCallback
知道我的意思是引用之前定义的函数与创建一个新的函数,如果引用一个已经使用过的函数,它需要返回 memoized版本,它怎么知道两者中的哪一个?特别是如果两个回调具有相同的依赖项列表?
解决方案
useState
在你的渲染函数中使用多个是很好的。
一个重要的要求是它们的数量和顺序应该始终相同。
参考:
推荐阅读
- node.js - 我应该在 ExpressionAttributeValues 中传递什么类型的整数类型的排序键以在 dynamodb 中查询?
- javascript - 向右滚动时滚动条我需要元素始终保持在右侧
- qt - QML如何通过单击列的标题对tableView进行排序
- android - Flutter:如何在以下文档中检索字段
- jsf - 如何将未定义数量的路径参数映射到 Ocpsoft Rewrite 中的请求参数?
- django - Django:关于使用 get_context_data 扩展 ListView 的两个问题
- python-3.x - 在不使用 numpy 的情况下,在 python 中获取单个 lineby 用户的 3*3 矩阵输入
- php - 如何在 macOSx 中安装 PHP_CodeSniffer?
- python - LinAlgError:不是正定的,即使有抖动
- google-cloud-platform - 如何使用ansible从gcp acount动态库存?