这是我的问题。
我正在使用react窗口来呈现大表。每一行都有自己的本地状态。删除一行后,下一行将向上移动并获取已删除行(这是我的应用程序中的样子)的状态。
有解决这个问题的办法吗?我可以为每一行的反应窗口的本地状态吗?
发布于 2020-05-16 21:02:01
简而言之,您不能这样做,问题是,当您删除一个项目时,以前用于它的组件将用于在其后面呈现项目(因此,如果您删除了第二个项,则第三个项将使用旧的第二个元素中的Row
)。它将保持该项目的状态。如果添加了一个useEffect
来检测项目是否发生了变化,那么在它之后就会破坏所有的东西(因为所有的东西都会弹出一个,删除项目之后的所有项目都会重置它们的状态)。您无法访问同级组件的状态,因此无法传播该状态。
你在这里有几个选择:
App
组件状态的一部分,并将其传递给组件,以便它能够适当地呈现。我还要补充的是,您可能不希望像现在这样在每个呈现项的大列表上映射。看起来您这样做是为了公开deleteItems
。我建议你做这样的事情:
<FixedSizeList
height={500}
width={300}
itemCount={items.length}
itemSize={50}
itemData={{items, deleteItem}}
>
{Row}
</FixedSizeList>
然后,Row
组件的data
将同时具有items
数组和deleteItem
函数。如果在App
中维护所选行状态,则可以轻松地扩展此状态以将所选状态和修改函数传递到Row
组件。
https://stackoverflow.com/questions/61842841
复制相似问题