Expo-cli: 2.2.0
React-Navigation: 2.18.0
У меня есть два следующих экрана для React Navigation, где один предназначен для ввода деталей формы, а другой -экран, на котором пользователь может либо редактировать представленные материалы, либо подтверждать.
Мой интерфейс ввода выглядит следующим образом:
export default class PickDropInterface extends
React.Component<NavigationProps<>> {
this.state = { tasks: [],
}
onSubmit = () => { this.props.navigation.navigate("Confirmation",
{tasks: this.state.tasks, deleteItem: this.deleteItem.bind(this)}); }
deleteItem = (key) => { var filteredTasks =
this.state.tasks.filter(function (item) { return (item.key !==key);
});
render() {
return (
<ItemDetail onSubmit={this.onSubmit} /> ) }
Экран моего подтверждения выглядит следующим образом:
export default class Confirmation extends React.Component<NavigationProps<>> {
this.state={
refresh: false,
}
deleteItem = (key) => {
this.props.navigation.state.params.deleteItem(key);
this.setState({
refresh: !this.state.refresh
})
}
_renderItem =({ item }) =>
(
<View style={styles.cardStyle}>
<Button
primary
label="Delete" onPress= {() => {this.deleteItem(item.key)}} /></View>
)
render() {
return (
<FlatList data={task}
renderItem= {this._renderItem}
keyExtractor= {(item) => item.key.toString()}
extraData={this.state} />
)
}
Ожидаемый вывод:
Кнопка удалениязапросить обновление в FlatList и показать новый список задач.
Токовый выход:
https://www.youtube.com/watch?v=RmrurTBQpak&feature=youtu.be