Redux todo示例 - 如何删除可见性过滤器?

时间:2016-01-18 14:45:47

标签: reactjs redux

我正在使用todos-with-undo示例编写我的应用程序,但我找不到从此示例中删除可见性功能的方法。以下是示例https://github.com/rackt/redux/tree/master/examples/todos-with-undo的链接:

主要问题出在App.js文件中:

<TodoList todos={visibleTodos} onTodoClick={id => dispatch(completeTodo(id))} />

我正在尝试用this.props.todos替换visibleTodos,但它不会以这种方式工作。如何摆脱这个visibleTodos属性?

1 个答案:

答案 0 :(得分:0)

待办事项尚未被定义为道具,它们仅在州内。这就是您无法通过this.props.todos

访问它们的原因

看看这个line of code,它将状态映射到props:

function select(state) {
   return {
      ...
      visibleTodos: selectTodos(state.todos.present, state.visibilityFilter),
      ...
   }
}

在这里你可以看到,visibleTodos只是一个过滤的子集。如果要访问渲染方法中的所有待办事项,可以执行以下两项操作:

删除对过滤todos(selectTodos)的方法的调用:

function select(state) {
   return {
      ...
      visibleTodos: state.todos.present,
      ...
   }
}

或者定义你自己的新道具,然后通过this.props.todos

访问
App.propTypes = {
  ...
  todos: PropTypes.arrayOf(PropTypes.shape({
    text: PropTypes.string.isRequired,
    completed: PropTypes.bool.isRequired
  }).isRequired).isRequired

}

function select(state) {
   return {
      ...
      todos: state.todos.present
   }
}