Tôi đang phát triển một ứng dụng danh sách đơn giản bằng React Native, vấn đề của tôi là: Tôi đã là NavigatorIOS ở gốc của dự án, với một thành phần chứa ListView như ban đầu tuyến đường và nút thanh điều hướng dẫn đến chế độ xem tác vụ.Phản hồi dữ liệu truyền thống gốc giữa các chế độ xem anh chị em
Khi tác vụ mới đã được tạo, chế độ xem sẽ bật để Chế độ xem danh sách được hiển thị. Tôi đang cố gắng thêm nhiệm vụ mới được tạo của tôi vào ListView này (nguồn dữ liệu của nó được chứa trong trạng thái thành phần).
Cách thực hiện thao tác như vậy, thực hành tốt là gì? Tôi sẽ sử dụng một đại biểu trong ứng dụng thuần túy nhưng ở đây, cả hai khung nhìn được xử lý bởi cá thể 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();
}
TasksList.js
var dataSource = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});
this.state = {
dataSource: dataSource.cloneWithRows(data)
};
Bạn có thể tìm complete source code here.
Vì vậy, bạn đề xuất sử dụng một số loại biến toàn cục/khu vực lớn để chuyển dữ liệu giữa các chế độ xem? Nghe có vẻ như kiến trúc rất xấu ... – Blackus
@Blackus Nếu không, làm thế nào để bạn có được danh sách nhiệm vụ? "Toàn cầu" là tùy chọn. – KChen
Đó chính là điểm ở đây. Trong khi phát triển bản địa, chúng ta có thể sử dụng giao thức hoặc truyền các khối mã để thực thi (như gọi lại). Vì vậy, danh sách nhiệm vụ chỉ được "chia sẻ" với hai chế độ xem này, nó không nằm trên một địa điểm chung với những thứ khác. – Blackus