Я здесь, чтобы спросить, как вы думаете, как правильно передать значение CheckBox на другой экран?
Например, если пользователь проверяет CheckBox, а затем переходит к Следующий экран, значение CheckBox должно отображаться на этом экране.
Но в моем коде мой console.info выводит false (я не понимаю, почему), и как только я перехожу на следующий экран, состояние на самом деле не проходит, потому что он отображается пустым.
Вот мой код
export default class tables extends Component {
constructor(props){
super(props)
this.state = {
...
check: {},
tbl_Merge: []
}
}
proceed_TO_Category = () => {
this.props.navigation.navigate('Category', {
userName : this.state.userName,
DineIn : this.state.DineIn,
tbl : this.state.tbl,
tbl_2nd : this.state.tbl_2nd,
tbl_Merge : this.state.tbl_Merge
});
console.info("CHECK ======> "+ this.state.tbl_Merge);
}
checkBox_Test = (table_NO) => {
const tbl_Merge = this.state.tbl_Merge;
const checkCopy = {...this.state.check}
if (checkCopy[table_NO]) {
checkCopy[table_NO] = false;
} else {
checkCopy[table_NO] = true;
}
this.setState({ check: checkCopy });
this.setState({ tbl_Merge: table_NO == this.state.tbl_Merge });
}
render() {
return(
<View>
....
<Flatlist
....
<CheckBox
value = { this.state.check[item.tbl_id] }
onChange = {() => this.checkBox_Test(item.tbl_id) }
/>
....
/>
....
<View>
<TouchableOpacity
onPress = {() => this.proceed_TO_Category()}>
<Text>Categories</Text>
</TouchableOpacity>
</View>
<View/>
)
}
}
мой флажок помещен в мой плоский список, и я также использую fetch для отображения некоторых элементов в моем плоском списке - я назвал их «tbl_id». Итак, для каждого элемента есть свой флажок.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


checkBox_Test = (table_NO) => {
const tbl_Merge = this.state.tbl_Merge;
const checkCopy = {...this.state.check}
if (checkCopy[table_NO]) {
checkCopy[table_NO] = false;
} else {
checkCopy[table_NO] = true;
}
this.setState({ check: checkCopy, tbl_Merge: table_NO == this.state.tbl_Merge }); // 1. Edit
}
Обновлено: мы не должны использовать setState последовательно. Поскольку setState является асинхронной функцией. Если вы хотите вызвать функцию после процесса setState с помощью функции обратного вызова, setState(update, callback);
вы определили tbl_Merge как массив, но пока вы устанавливаете его в состояние, вы устанавливаете его как логическое значение.
Какие у вас данные Flatlist? Специально tbl_id.