【发布时间】:2021-02-11 21:00:04
【问题描述】:
我有一个反应应用程序,它使用状态挂钩来跟踪列表中有多少项目。当我从列表中删除项目时,UI 会更新,但底层元素数组仍会显示所有元素。这是一个演示问题的代码框。
// App.js
export default function App() {
const handleRemoveRow = (i) => {
console.log("state array: " + feesArray);
console.log("index to remove: " + i);
setFeesArray(
feesArray.filter((_, index) => {
console.log("filtering index: " + index);
return index !== i;
})
);
};
const [feesArray, setFeesArray] = useState([
<ListItem handleRemoveRow={handleRemoveRow} index={0} key={0} />,
<ListItem handleRemoveRow={handleRemoveRow} index={1} key={1} />,
<ListItem handleRemoveRow={handleRemoveRow} index={2} key={2} />
]);
return (
<>
<ul>{feesArray}</ul>
</>
);
}
// ListItem.js
export default function ListItem(props) {
return (
<li>
<IconButton
onClick={() => {
props.handleRemoveRow(props.index);
}}
>
<CloseIcon />
</IconButton>
</li>
);
}
https://codesandbox.io/s/sleepy-leakey-zewrb?file=/src/App.js
如果您尝试通过单击“x”来删除项目,您将看到一行被删除,但底层数组将保留 3 个项目,并且不允许删除更多项目。提前致谢。
【问题讨论】:
标签: reactjs react-hooks material-ui state