我正在使用 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"
});
}
}}/>
);
}
新任务.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();
}
任务列表.js
var dataSource = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});
this.state = {
dataSource: dataSource.cloneWithRows(data)
};
您可以在此处找到完整的源代码。