我想以一种非常优雅的方式解决此问题,但是我觉得当前的代码已经搞砸了。因此,我有一个包含组件列表和按钮的父组件。 Flatlist包含具有复选框的子组件,按下按钮后,我要检查Flatlist中的哪些复选框被选中。我解决这个问题的方法是将一个prop传递给child组件。这就是我父级FlatList和状态的样子-
constructor(props) {
super(props);
this.state = {
getAllVendorDetails: 0, //This state is to trigger an event(by
incrementing) in the child checkboxes to send the ticked vendors to
this parent component.
};
}
<FlatList
data={this.state.vendorsToPick}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => <SelectVendors getAllVendorDetails=
{this.state.getAllVendorDetails} pushData={(item) =>
this.addVendor(item)} vendorData={item}></SelectVendors>}
horizontal={true}
extraData={this.state.getAllVendorDetails}
showsHorizontalScrollIndicator={false}
/>
按下按钮后,我会增加状态 getAllVendorDetails ,这会触发子组件和componentDidUpdate中的重新渲染,将勾选了复选框的组件作为参数推送给父组件通过道具-依次调用父组件中的函数,该函数将这些项添加到数组中。所有这些工作都很好,按下按钮后我得到了所有勾选的复选框。 (也许还有一种更好的方法,idk)。
我只想在收到阵列中所有带有复选框打勾的项目后才执行操作,我不知道该如何实现,目前在按下按钮后有500ms的延迟,然后如果我检查阵列,则勾选所有复选框。但是可以肯定的是,必须有更好的方法来做到这一点。