无法在react redux中显示TODO(属性映射未定义)?

无法在react redux中显示TODO(属性映射未定义)?,redux,Redux,我正在尝试通过创建自己的todo应用程序来学习Redux,而不需要Redux官方的天赋。当我得到TypeError:无法读取未定义的属性“map”时,我在显示TODO列表时遇到问题 回购协议可以找到。它相当轻量级(组件比Redux的todo应用程序少) 这是我遇到麻烦的部分: /src/components/TodoList.js import React from 'react'; const TodoList = ({todos}) => { return ( <

我正在尝试通过创建自己的todo应用程序来学习Redux,而不需要Redux官方的天赋。当我得到
TypeError:无法读取未定义的属性“map”时,我在显示TODO列表时遇到问题

回购协议可以找到。它相当轻量级(组件比Redux的todo应用程序少)

这是我遇到麻烦的部分:

/src/components/TodoList.js

import React from 'react';

const TodoList = ({todos}) => {
  return (
    <ul>
      {todos.map(todo =>
        <li key={todo.id}>{todo.text}</li>
      )}
    </ul>
  )
}

export default TodoList;
我很确定我的Redux商店的状态是正确的。可以找到AddTodo

但是,由于某种原因,
TodoList
components/TodoList.js
中的组件没有作为
{todos}
接收内部的todos状态。我想我可能犯了一些错误


如何正确显示
TodoList
中的所有
todos
状态?

您忘记在
MapStateTrops
中返回值。应该是:

const mapStateToProps = state => ({
  todos: state.todos,
});

哦,天哪,真不敢相信我这么做了。谢谢顺便说一下,我想我知道我的ES6箭头功能,但显然我不知道。离题了,但你知道为什么添加括号可以解决这个问题吗?这是因为大括号单独定义了函数体,所以基本上你之前所做的类似于函数中只有一个表达式。当你在花括号周围加上括号时,它们就变成了你返回的对象(简而言之,括号就像是
return
)的快捷方式。谢谢!哈哈,我也发现了这个:。页面的第一部分说明了一切。再次感谢您的帮助:)
const mapStateToProps = state => ({
  todos: state.todos,
});