请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

传入函数的方式就可以直接避免对todos这个数组的依赖,这句话是什么意思?

老师,讲到这时,这么说的,「传入函数的方式就可以直接避免对todos这个数组的依赖」,是什么意思?意思是不会更改数组内其他数据的值??

const addTodo = (todo) => {
	setTodos(todos => [...todos, todo]);
};

正在回答 回答被采纳积分+3

1回答

茵风泳月 2019-11-29 11:03:32

同学你好,这句话应该是对于位于use*函数中setState更有意义,我们知道,use*函数需要声明对外部数据的依赖,你可以这样写:

useEffect(() => {
    setTodos([...todos, todo]);
}, [todos]);

也可以这样写:

useEffect(() => {
    setTodos(todos => [...todos, todo]);
});

显然,后一种写法避免了对todos的依赖,更优。

祝您学习愉快!

0 回复 有任何疑惑可以回复我~
  • 这个我还是不懂,todos=>[...todos, todo]的等价形式应该是function(todos){return [...todos, todo]}吧,这里todos只是个形参,也就是说我写成a=>[...a, todo]应该是一样的,为什么能解除对todos的依赖呢
    回复 有任何疑惑可以回复我~ 2020-08-02 18:45:17
  • 传递给setTodos的参数不同,一个是外部传入的todos,这样的话,setTodos并不关心这个todos是从哪来的;另一种就是传入函数,这样setTodos就会自动从store中获取最新的todos作为这个函数的参数。
    回复 有任何疑惑可以回复我~ 2020-08-05 10:07:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信