我正在React中构建经典的“ todo”应用程序。 我想实现功能以根据状态过滤待办事项:完成,活动和全部。
我通常会复制原始状态,然后将更改应用于副本。
问题是当我在数组上使用过滤器时,我丢失了原始的TODO,因此当我使用“全部”按钮时,在过滤之前我无法检索数据。
这是我的状态:
// Camera shouldn't be selected, but pop the UIImagePickerController!
let isAllowedToTakePicture = (photosDataSource?.selections.count ?? 0) < settings.maxNumberOfSelections
if let composedDataSource = composedDataSource , composedDataSource.dataSources[indexPath.section].isEqual(cameraDataSource), isAllowedToTakePicture {
let cameraController = UIImagePickerController()
cameraController.allowsEditing = false
cameraController.sourceType = .camera
cameraController.delegate = self
self.present(cameraController, animated: true, completion: nil)
这是我用来根据完成状态过滤状态的功能之一
pod install/update
我目前不使用redux或Immutable.js,因此使用简单React的任何帮助将非常有用。
答案 0 :(得分:1)
关键思想是使所有未修改的项目保持在您的状态。
我转载了你的例子。看一看。我向状态添加了 dbRef.keepSynced(true);
ValueEventListener listener = new ValueEventListener() {...};
Query query = dbRef.orderByKey().limitToLast(1);
query.addListenerForSingleValueEvent(listener);
dbRef.keepSynced(false);
变量,为您的应用程序增加了基本的过滤灵活性。当keepSynced()
等于showDone
时,我在showDone
上应用true
方法并将结果分配给负责显示结果的filter
变量。
state.todos
todosList