如何等待功能由平面列表的所有组件执行?

时间:2019-04-27 14:52:37

标签: react-native react-native-flatlist

我想以一种非常优雅的方式解决此问题,但是我觉得当前的代码已经搞砸了。因此,我有一个包含组件列表和按钮的父组件。 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的延迟,然后如果我检查阵列,则勾选所有复选框。但是可以肯定的是,必须有更好的方法来做到这一点。

0 个答案:

没有答案