从存储中获取数据¶
要从存储中获取数据,请使用 connect()
。
使用 connect 时,您会将组件分解成两个部分
显示数据的部分(展示组件)
// todos.js const Todos = React.createClass({ propTypes: { todos: PropTypes.array.isRequired } render: function() {...} }) module.exports = Todos;
从存储中获取数据的部分(容器组件)
// todos-container.js const Todos = require("path/to/todos"); function mapStateToProps(state) { return { todos: state.todos }; } module.exports = connect(mapStateToProps)(Todos);
connect()
生成容器组件。它围绕传入的展示组件(例如 Todos)进行包装。
mapStateToProps
通常称为选择器。这是因为它从 state 对象中选择数据。当容器组件正在渲染时,将调用选择器。它将选取展示组件所需的数据。Redux 将获取此对象并将其作为 props 传递给展示组件。
通过这种设置,展示组件很容易在不同的应用程序之间共享。它没有任何对应用程序的依赖,也没有关于如何获取数据的任何硬编码预期。它只是获取传递给它的 props 并渲染它们。
对于更高级的用例,您可以将其他参数传递给选择器和 connect()
函数。在 connect()
文档中阅读有关这些内容的信息。
需要回答以下问题
如何加载异步数据?
如何进行乐观更新或响应异步工作中的错误?
是否为我的状态使用 Immutable.js?
我应该使用什么文件结构?
如何测试 redux 代码?
以及更多。