目录
当前位置: 首页 > 文档资料 > Redux 中文文档 >

常见问题

优质
小牛编辑
131浏览
2023-12-01

目录

  • 综合
    • 何时学习 Redux ?
    • 何时使用 Redux ?
    • Redux 只能搭配 React 使用?
    • Redux 需要特殊的编译工具支持吗?
  • Reducer
    • 如何在 reducer 之间共享 state ? combineReducers 是必须的吗?
    • 处理 action 必须用 switch 语句吗?
  • 组织 State
    • 必须将所有 state 都维护在 Redux 中吗? 可以用 React 的 setState() 方法吗?
    • 可以将 store 的 state 设置为函数、promise 或者其它非序列化值吗?
    • 如何在 state 中组织嵌套及重复数据?
  • 创建 Store
    • 可以创建多个 store 吗,应该这么做吗?能在组件中直接引用 store 并使用吗?
    • 在 store enhancer 中可以存在多个 middleware 链吗? 在 middleware 方法中,next 和 dispatch 之间区别是什么?
    • 怎样只订阅 state 的一部分变更?如何将分发的 action 作为订阅的一部分?
  • Action
    • 为何 type 必须是字符串,或者至少可以被序列化? 为什么 action 类型应该作为常量?
    • 是否存在 reducer 和 action 之间的一对一映射?
    • 怎样表示类似 AJAX 请求的 “副作用”?为何需要 “action 创建函数”、“thunks” 以及 “middleware” 类似的东西去处理异步行为?
    • 是否应该在 action 创建函数中连续分发多个 action?
  • 代码结构
    • 文件结构应该是什么样?项目中该如何对 action 创建函数和 reducer 分组? selector 又该放在哪里?
    • 如何将逻辑在 reducer 和 action 创建函数之间划分? “业务逻辑” 应该放在哪里?
    • 为何应该使用 action 创建函数?
  • 不可变数据
    • Immutability(数据不可变性)的好处是什么?
    • 为什么 Redux 要求数据不可变?
    • 我一定要用 Immutable.JS 吗?
    • 用 ES6 实现数据不可变的一些问题
  • 在 Redux 中使用 Immutable.JS
    • 为什么需要使用像 Immutable.JS 这种用于实现数据不可变的库?
    • 为什么要选择 Immutable.JS 作为实现数据不可变的库?
    • 使用 Immutable.JS 的一些问题
    • Immutable.JS 是否值得一用?
    • 在 Redux 中使用 Immutable.JS 的一些最佳实践
  • 代码结构
     - 我的项目结构应该是怎么样的?在项目中应该如何组织 action 创建函数和 reducer? 选择器(selector)应该放在哪里?

    • 如何分离 reducer 与 action 创建函数之间的逻辑?业务逻辑应该放在哪里?
    • 为什么需要使用 action 创建函数?
  • 性能
    • 考虑到性能和架构, Redux “可扩展性” 如何?
    • 每个 action 都调用 “所有的 reducer” 会不会很慢?
    • 在 reducer 中必须对 state 进行深拷贝吗?拷贝 state 不会很慢吗?
    • 怎样减少 store 更新事件的数量?
    • 仅有 “一个 state 树” 会引发内存问题吗?分发多个 action 会占用内存空间吗?
    • 缓存远程数据会导致内存问题吗?
  • React Redux
    • 为何组件没有被重新渲染、或者 mapStateToProps 没有运行?
    • 为何组件频繁的重新渲染?
    • 怎样使 mapStateToProps 执行更快?
    • 为何不在被连接的组件中使用 this.props.dispatch ?
    • 应该只连接到顶层组件吗,或者可以在组件树中连接到不同组件吗?
  • 其它
    • 有 “真实存在” 且很庞大的 Redux 项目吗?
    • 如何在 Redux 中实现鉴权?