Javascript 反应重复';s connect()方法引发类型错误

Javascript 反应重复';s connect()方法引发类型错误,javascript,reactjs,redux,connect,react-redux,Javascript,Reactjs,Redux,Connect,React Redux,在Dan Abramov关于Redux的优秀教程和第27章“使用connect()生成容器”中,出现了一个奇怪的错误: 首先,我定义这两个函数: const mapStateToProps = (state) => { return { todos: getVisibleTodos(state.todos, state.visibilityFilter) }; } const mapDispatchToProps = (dispatch) => { re

在Dan Abramov关于Redux的优秀教程和第27章“使用connect()生成容器”中,出现了一个奇怪的错误:

首先,我定义这两个函数:

const mapStateToProps = (state) => {
   return {
      todos: getVisibleTodos(state.todos, state.visibilityFilter)
   };
}
const mapDispatchToProps = (dispatch) => {
   return {
      onTodoClick: (id) => {
         dispatch({
            type: 'TOGGLE_TODO',
            id
         })
      }
   }
}
然后导入必要的依赖项:

import { connect } from 'react-redux'
然后,我使用react redux中公开的方法创建组件,并传入两个函数,最后连接到我的另一个组件,
TodoList

const VisibleTodoList = connect(mapStateToProps, mapDispatchToProps)(TodoList);
执行此操作时,会导致浏览器无法渲染,控制台返回:

TypeError:无法读取未定义的属性“displayName”

我以前从未遇到过这个错误,它似乎是特定于
react redux
connect()
方法的

以前有没有人遇到过这种情况,和/或知道是什么原因造成的


更新:

getVisibleTodos
是上面定义的。如果您想查看它的
TodoList

const TodoList = ( {todos, onTodoClick} ) => (
   <ul>
      {todos.map(todo =>
         <Todo key={todo.id}
            {...todo}
            onClick={() => onTodoClick(todo.id)}
         />
      )}
   </ul>
)
consttodolist=({todos,onTodoClick})=>(
    {todo.map(todo=> onTodoClick(todo.id)} /> )}
)
在调用
connect
之后,您可能正在定义
TodoList
组件。与
var
关键字不同,像
let
const
class
这样的ES6关键字不会被提升到作用域的顶部,而只从它们声明的行开始存在。因此,如果在定义
TodoList
之前调用
connect()
,则实际上是在运行
connect()(未定义)
。也可能是您的import语句不正确,这也可能导致
TodoList
未定义


有关进一步的讨论,请参阅。

在调用
connect
之后,您可能正在定义
TodoList
组件。与
var
关键字不同,像
let
const
class
这样的ES6关键字不会被提升到作用域的顶部,而只从它们声明的行开始存在。因此,如果在定义
TodoList
之前调用
connect()
,则实际上是在运行
connect()(未定义)
。也可能是您的import语句不正确,这也可能导致
TodoList
未定义


有关进一步的讨论,请参阅。

请向我们展示
getVisibleTodos
正在做什么。请参阅更新您的
TodoList
react类是什么?它是否正确导入或定义?正如@Zack Tanner所说,请向我们展示
getVisibleTodos
@Zack Tanner和@Pineda,
getVisibleTodos
被定义为
connect()
方法,该方法传递MapStateTops和mapDispatchToProps,然后连接到另一个组件,在本例中为
TodoList
。因此,我已经向您展示了
getVisibleTodos
。请向我们展示
getVisibleTodos
正在做什么。请查看更新您的
TodoList
react类是什么?它是否正确导入或定义?正如@Zack Tanner所说,请向我们展示
getVisibleTodos
@Zack Tanner和@Pineda,
getVisibleTodos
被定义为
connect()
方法,该方法传递MapStateTops和mapDispatchToProps,然后连接到另一个组件,在本例中为
TodoList
。所以我已经向你展示了
getVisibleTodos
。你是一个传奇人物。就这样!另外,知道ES6变量关键字不提升非常有用,但我不知道这一点。谢谢!:)当然是的,块作用域实际上是
let
const
存在的主要原因,但这可能会让人们感到有点惊讶。仅供参考,我有一个关于的文章列表,作为我文章的一部分,你可能会觉得很有帮助。你是一个传奇人物。就这样!另外,知道ES6变量关键字不提升非常有用,但我不知道这一点。谢谢!:)当然是的,块作用域实际上是
let
const
存在的主要原因,但这可能会让人们感到有点惊讶。仅供参考,我有一个关于的文章列表,作为我文章的一部分,您可能会发现它很有用。