Redux 反应还原';s connect不会将任何内容传递回我的组件
所以我对React-Redux的connect有点困惑,因为它似乎没有将任何内容传递回我的组件。我整个上午都在试着调试这个,我看了一些教程,但我看不出我做错了什么。下面是一段相关代码。我是不是误解了Redux 反应还原';s connect不会将任何内容传递回我的组件,redux,react-redux,Redux,React Redux,所以我对React-Redux的connect有点困惑,因为它似乎没有将任何内容传递回我的组件。我整个上午都在试着调试这个,我看了一些教程,但我看不出我做错了什么。下面是一段相关代码。我是不是误解了 consttodolist=(道具)=>{ console.log(props);//仅返回具有一个属性的对象 //包含函数的分派。在哪里 //我的TODO、过滤器、切换TODO和删除TODO是否正确? 返回( 占位符 ) } const renderTogdogenerated=connect(
consttodolist=(道具)=>{
console.log(props);//仅返回具有一个属性的对象
//包含函数的分派。在哪里
//我的TODO、过滤器、切换TODO和删除TODO是否正确?
返回(
占位符
)
}
const renderTogdogenerated=connect(
todoStateToProps,
托多迪斯帕奇托普洛斯酒店
)(托多利斯特);
常数todostatetops=(状态)=>{
返回{
待办事项:state.todos,
过滤器:state.filter
}
}
const toddispatchtoprops=(调度)=>{
返回{
toggleTodo:(toggleId)=>{
调度(toggleTodo(toggleId));
},
removeTodo:(removeId)=>{
调度(removeTodo(removeId));
}
}
}
在ES6中,用const
声明的变量在声明它们的行之前不存在。您对connect
的调用发生在todoStateToProps
和todoDispatchToProps
实际存在之前,因此此时它们是未定义的。您需要将对connect
的调用移动到该代码块的末尾
另外,作为参考,connect
支持“对象速记”来处理mapspatch
参数。不必像在那个例子中那样编写实际的函数,只需传递一个充满动作创建者的对象作为第二个参数,它们将被dispatch
封装。因此,您只需要:
const actionCreators = {toggleTodo, removeTodo};
const RenderTodoGenerated = connect(todoStateToProps, actionCreators)(TodoList);
啊,好的,哇,成功了。我非常习惯于从ES6前几天起自动将变量提升到顶部。我想是时候复习一下我的ES6了。谢谢你的速记技巧。干杯,谢谢!
const actionCreators = {toggleTodo, removeTodo};
const RenderTodoGenerated = connect(todoStateToProps, actionCreators)(TodoList);