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