D P*_*ark 10 functional-programming ecmascript-6 reactjs
我有一个名为的函数onRemove,其写法如下:
const [todos, setTodos] = useState(todoData);
const onRemove = useCallback(
(id) => {
setTodos(todos.filter((todo) => todo.id !== id));
},
[todos]
);
Run Code Online (Sandbox Code Playgroud)
然后我注意到改变它的功能会导致渲染时间缩短。
const onRemove = useCallback(
(id) => {
setTodos(todos => todos.filter((todo) => todo.id !== id));
},
[]
);
Run Code Online (Sandbox Code Playgroud)
我的问题是:
setState()?在第一种情况下,当您将 todos 添加为 的依赖项时useCallback,每次调用该函数时都会重新创建该函数,因为它本身设置 todos 状态,因此不会针对记忆进行优化
在第二种情况下,您使用的是回调版本操作系统状态更新程序,它本质上将为您提供先前的状态作为回调的参数,并且该函数只会创建一次。
这应该是首选方法
要了解更多关于函数式 setState 的优点,请查看链接的帖子:
| 归档时间: |
|
| 查看次数: |
9484 次 |
| 最近记录: |