Я разрабатываю простое приложение для списка дел с использованием React Native, моя проблема заключается в следующем: у меня есть NavigatorIOS в корне моего проекта с компонентом, содержащим ListView в качестве начального маршрута, и кнопкой панели навигации, которая ведет к представление создания задачи.
После создания новой задачи представление всплывает, чтобы отображался ListView. Я пытаюсь добавить свою недавно созданную задачу в этот ListView (его источник данных содержится в состоянии компонента).
Как выполнить такую операцию, что рекомендуется делать? Я бы использовал делегат в чисто нативном приложении, но здесь оба представления обрабатываются экземпляром NavigatorIOS.
index.ios.js
addTask() {
console.log("Test");
},
render() {
return (
<React.NavigatorIOS
ref="nav"
style={styles.container}
tintColor="#ED6063"
initialRoute={{
title: "Tasks",
component: TasksList,
rightButtonTitle: 'Add',
onRightButtonPress: () => {
this.refs.nav.navigator.push({
title: "New task",
component: NewTask,
passProps: {
onTaskAdded: this.addTask
},
leftButtonTitle: "Cancel"
});
}
}}/>
);
}
NewTask.js
taskAdded() {
console.log("Added: " + this.state.title + " - " + this.state.description);
this.props.onTaskAdded({
title: this.state.title,
description: this.state.description
});
this.props.navigator.pop();
}
TaskList.js
var dataSource = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});
this.state = {
dataSource: dataSource.cloneWithRows(data)
};
Вы можете найти полный исходный код здесь.