繁体   English   中英

React-Native可见性过滤器不起作用?

[英]React-Native visibility filter won't work?

我目前正在尝试使用react-native和redux创建一个“ TodoApp”。 我可以在其中添加和切换工作的不同部分,但似乎无法正确设置可见性过滤器(显示全部/完成/活动)。

这是TaskListContainer的相关代码:

import { connect } from 'react-redux';
import TaskListComponent from '../components/TaskListComponent';
import {visibilityFilters} from "../actions/actionTypes";

const getVisibleTodos = (tasks, filter) => {
switch (filter) {
    case visibilityFilters.SHOW_ALL:
        return tasks;
    case visibilityFilters.SHOW_COMPLETED:
        return tasks.filter(t => t.completed);
    case visibilityFilters.SHOW_ACTIVE:
        return tasks.filter(t => !t.completed);
    default:
        return null;
}
}

const mapStateToProps = (state) => {
return {
    //tasks: !state.taskReducers ? [] : state.taskReducers
    tasks: getVisibleTodos(state.tasks, state.visibilityFilter)
};

};

const TaskListContainer = connect(mapStateToProps, null)(TaskListComponent);
export default TaskListContainer;

如果初始状态为“ SHOW_ALL”,则该应用程序正在运行,但是每当我添加新项目时,它都不会显示。 如果状态切换为“ SHOW_COMPLETED”或“ SHOW_ACTIVE”,则应用程序将崩溃:“无法读取未定义的属性'filter'”。

我观看/阅读的每个教程都使用此“ getVisibleTodos”功能,并且可以正常工作。 为什么不给我呢?

我解决了这个问题。 我没有将getVisibleTodos函数放入容器中,而是将其放入组件中 ,而是在从商店中获取数据之后过滤了数据,而不仅仅是获取了我正在使用的数据。 它效率低一些,但可以。

其实我不认为有必要这样做,我已经将其移至TaskListContainer它按预期运行正常,请参见此处: https : //codesandbox.io/s/1ok4k5vro3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM