Как ждать выполнения функции всеми компонентами плоского списка? - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу решить это очень элегантным способом, но я чувствую, что код в настоящее время довольно запутан. Итак, у меня есть родительский компонент, который содержит плоский список и кнопку. Плоский список содержит дочерние компоненты, у которых есть флажки, при нажатии кнопки я хочу проверить, какие флажки в моем плоском списке отмечены. Я решил эту проблему путем передачи подпорки в дочерний компонент. Вот так выглядит мой родительский 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 я помещаю компонент, у которого установлен флажок, в родительский элемент как параметр через опора - который inturn вызывает функцию в родительском компоненте, который добавляет эти элементы в массив. Все это работает отлично, я получаю все отмеченные флажки при нажатии кнопки. (Может быть, есть лучший способ сделать это, ИДК).

Я хочу выполнить операцию ТОЛЬКО после того, как я получил все элементы, отмеченные галочкой в ​​моем массиве, я не знаю, как этого добиться, в настоящее время после нажатия кнопки у меня задержка составляет 500 мс, а затем если я проверяю свой массив, у меня есть все отмеченные пункты флажка. Но наверняка должен быть лучший способ сделать это.

...