求助一下关于 react 更新 list 的一个疑问。

2022-07-26 15:43:48 +08:00
 hi20151215x
	TodoList.map((item,index)=>{
    	return <Todo key=index total=TodoList.length>
    })
    

现状:子组件 Todo 获取到的 total 值 分别是 1,2,3.....

想要获得的结果:每当 List 更新时,所有子组件的 total 也都更新(所有子组建的 total 项一致,并且和 TodoList.length 相同)。

在 google 用英文搜索好些结果,但因为英文描述问题,总是找不到确切的答案。 :) thanks in advance

1560 次点击
所在节点    程序员
27 条回复
freeman12
2022-07-26 17:56:11 +08:00
子组件直接 props.size 用就好了,干嘛存到自己的 state
freeman12
2022-07-26 17:56:47 +08:00
这样<View>内容:{content} TodoList 尺寸:{props.size}</View>
silk
2022-07-26 17:57:41 +08:00
,[content,size] 去掉观察目标 有变化就更新 或者按照#19
yunyuyuan
2022-07-26 18:19:25 +08:00
你 todo 组件 useEffect 的依赖填错了,应该是 props.content 和 props.size ,而且这样写是脱裤子放屁。。。
hi20151215x
2022-07-26 18:22:25 +08:00
@codehz
@westoy
@freeman12
@silk
谢谢大家 问题已经解决啦。使用了 freeman12 的主意 :) 🙏感谢
shakukansp
2022-07-26 18:29:47 +08:00
props 变动可以触发组件重渲染,所以
function Todo(props) {
return (
<View>内容:{props.content} TodoList 尺寸:{props.size}</View>
)
}
Envov
2022-07-27 10:19:45 +08:00
useEffect(() => {
setContent(props.content);
setSize(props.size);
}, [content, size]);
这个依赖项写错了,导致结果是 useEffect 内的函数不会执行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX