在数组上创建一些过滤器,然后使用“全部”过滤器取消过滤

时间:2018-06-20 12:47:20

标签: javascript arrays reactjs filtering state

我正在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的任何帮助将非常有用。

1 个答案:

答案 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