react-native - connect() 中的 mapStateToProps() 必须返回一个普通对象,而不是收到 Undefined
问题描述
我已经实现了 redux 来完成一个 TODO 应用程序。
我的待办事项代码
import { connect } from "react-redux";
import TodoList from "../components/TodoList.js";
// Here we will connect
const mapStateToProps = state => {
todos: state.todos
}
const mapDispatchToProps = dispatch => {
toggleTodo: id => dispatch({ type: 'TOGGLE_TODOS', id })
}
export default connect(mapStateToProps, mapDispatchToProps)(TodoList);
// 减速器
const todos = (state = [], action) => {
switch (action.type) {
case 'ADD_TODO':
return [
...state, {
id: action.id,
text: action.text,
visibility: false
}
]
case 'TOGGLE-TODO':
return state.map(todo => (todo.id === action.id)
?
{ ...todo, completed: !todo.completed }
: todo)
default:
return state;
}
}
export default todos;
最后我收到一个错误,因为“mapStateToProps 必须接收一个普通对象,而不是接收未定义”。
请让我知道如何解决这个问题。
解决方案
您需要返回对象,您可以这样做,请查看对象周围的括号。
const mapStateToProps = state => ({
todos: state.todos
})
你也可以做
const mapStateToProps = state => {
return { todos: state.todos };
};
两者都返回一个对象。
推荐阅读
- c++ - Odd offset in QT Window when using QGraphicsView and QGraphicsScene
- api-gateway - 如何将 krakenD 端点映射到 SOAP 请求后端?
- django - Django 查询集将空值与空 OuterRef 匹配
- node.js - NodeJS 流媒体视频
- assembly - 汇编 CALL 和 RET 堆栈
- angular - 使用 Jest 模拟 Angular 组件的 @Input 值
- r - 折叠R中不同子字符串的空格
- python - 有什么方法可以在 Python 3.8 中获取“_cffi_backend”模块
- javascript - 未捕获的 TypeError:无效的解构不可迭代实例的尝试
- amazon-web-services - 列出 OEC 中特定项目的 EC2 实例的私有 IP 地址