Ami*_*mit 5 javascript reactjs react-hooks
假设我想创建经常需要的useInputState钩子:
function useInputState(initialValue) {
const [value, setValue] = useState(initialValue);
const onChange = useCallback(
e => setValue(e.target.value),
[ /* ??? */ ]
);
return { value, onChange };
}
Run Code Online (Sandbox Code Playgroud)
我需要将setValuesetter 函数添加到回调的依赖项中吗?我们可以指望二传手始终保持不变吗?当我尝试时,这似乎有效,但这是好的做法吗?或者我们应该假设回调闭包中的任何内容都可以更改并影响其实现?
(我可以想到更多最终提出同样问题的例子)
是的,useState状态设置器是相同的功能;即使它不会,也会期望更新状态。它应该像问题所示那样使用。
useReducer 文档中更好地解释了常见用法:
useReducer 还可以让您优化触发深度更新的组件的性能,因为您可以向下传递调度而不是回调。
对调用范围的关注useState仅适用于useState在使用它的回调范围内保持不变的状态值,例如this Problem。如果应使用当前状态,则应使用状态更新器功能来检索它,例如setValue(currentState => currentState + 1).
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |