从存储中获取数据

要从存储中获取数据,请使用 connect()

使用 connect 时,您会将组件分解成两个部分

  1. 显示数据的部分(展示组件)

     // todos.js
     const Todos = React.createClass({
       propTypes: {
         todos: PropTypes.array.isRequired
       }
    
       render: function() {...}
     })
    
     module.exports = Todos;
    
  2. 从存储中获取数据的部分(容器组件)

     // 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 代码?

以及更多。