[英]React.js displayed values not matching parent state and rendered HTML
我正在制作一个待办事项列表类型的应用程序来学习 React。 我有一个App
组件,其中包含一个Todolist
组件,其中包含ListItem
组件。 每个ListItem
组件都有一个标题和一个 boolean completed
,由一个复选框控制。
选中并完成的ListItem
组件被排序到Todolist
的底部。 检查项目时,我调用 function setItemCompleted()
(从App
的道具中传递)来更新App
的 state 并重新渲染所有内容。
在setItemCompleted()
中,我打印更新后的ListItem
数组,它符合我的预期。 当 React 重新渲染所有内容并打开 Chrome 检查器以检查渲染的 HTML 时,它也符合我的预期。 问题是,页面上显示的实际ListItem
与其中任何一个都不匹配; 而不是选中的项目移动到页面底部,而是检查列表中的最后一个项目。
这是一个“最小、完整且可重现”的示例:
https://codesandbox.io/s/react-playground-su7iw?file=/index.js
您使用 index 作为ListItem
键,这是不推荐的,在您的情况下会导致这些问题。 从key={i}
更改为key={item.itemID}
应该可以解决这些问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.