采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,讲到这时,这么说的,「传入函数的方式就可以直接避免对todos这个数组的依赖」,是什么意思?意思是不会更改数组内其他数据的值??
const addTodo = (todo) => { setTodos(todos => [...todos, todo]); };
同学你好,这句话应该是对于位于use*函数中setState更有意义,我们知道,use*函数需要声明对外部数据的依赖,你可以这样写:
useEffect(() => { setTodos([...todos, todo]); }, [todos]);
也可以这样写:
useEffect(() => { setTodos(todos => [...todos, todo]); });
显然,后一种写法避免了对todos的依赖,更优。
祝您学习愉快!
这个我还是不懂,todos=>[...todos, todo]的等价形式应该是function(todos){return [...todos, todo]}吧,这里todos只是个形参,也就是说我写成a=>[...a, todo]应该是一样的,为什么能解除对todos的依赖呢
传递给setTodos的参数不同,一个是外部传入的todos,这样的话,setTodos并不关心这个todos是从哪来的;另一种就是传入函数,这样setTodos就会自动从store中获取最新的todos作为这个函数的参数。
登录后可查看更多问答,登录/注册
"快手"大神教你制作堪比原生APP体验的PWA应用,进阶高级开发
974 8
1.2k 7
1.4k 7
1.2k 6
1.0k 5