[英]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.