自学内容网 自学内容网

redux的核心知识点

1,store

仓库。在redux中维护一个全局唯一的store来存储状态,他通过ConfigureStore(reducer函数)创建。

他的特征是提供一个getState函数用来获取状态,但是他并没有提供setState方法,唯一修改state的方式就是发起一个action。

2,action

动作。action就是一个带有type属性的普通js对象,redux中统一使用action对象来描述发生了什么,例如在触发点击事件后通过action来更新state。

示例:

{ type: 'todos/ADD_TODO', payload: 'Go to swimming pool' }
{ type: 'todos/TOGGLE_TODO', payload: 1 }

3,Action Creater

动作创建器。他是一个函数,用来创建并返回一个action对象。

示例:

const addTodo = (text) => {
  return {
    type: 'todos/ADD_TODO',
    payload: text
  }
}

4,reducer

缩减器。reducer是一个js函数,他的作用是把state和action作为其参数,并将二者联系起来,通过相应的逻辑来决定并返回更新后的state

示例:

function todos(state = [], action) {
  switch (action.type) { // 判断action的行为
    case 'todos/ADD_TODO': // 添加
      return state.concat([{ text: action.text, completed: false }]);
    case 'todos/TOGGLE_TODO': // 切换
      return state.map((todo, index) =>
        action.index === index
          ? { text: todo.text, completed: !todo.completed }
          : todo
      );
    // 都没匹配到,返回原来的 state 不变
    default:
      return state
  }
}

5,dispatch

发送方法。他是Redux中store的一个方法,唯一修改state的方式就是调用store.dispatch(action对象)(即第1节说的发起一个action)。

示例:

store.dispatch({ type: 'counter/increment' });

// action Creater创建action
const addTodo = (text) => {
  return {
    type: 'todos/todoAdded',
    payload: text
  }
}

store.dispatch(addTodo());

4,单向数据流

state(数据源) --------渲染出---------->  view(UI)
   ^                                         |
   |                                         |
触发更新                                用户交互(例如点击)
   |                                         |
   |                                         |
   ------------------ action <----------------          

5,redux生态介绍

  • 中间件:

中间件都是用来简化redux的开发,他存在于action和store中间,是对于dispatch方法的包装。例如redux-thunk。

  • Redux核心包:

redux是一个非常小的库,他的的核心包只有一些基础的API,例如创建一个redux的存储实例(createStore)、合并多个reducer、合并多个中间件等。这意味着其他的相关逻辑都需要自己编码实现。

  • Redux-thunk中间件:

简化redux开发。改造store.dispatch,主要实现了异步请求的支持。

  • Redux-saga中间件:

简化redux开发。用于管理代码副作用的库。

  • redux-promise中间件:

简化redux开发。另一种异步请求的解决方案,让Action Creater返回一个promise对象

  • Redux DevTools插件

用来在浏览器调试,有效地调试应用程序。

  • React-redux库

官方提供的UI绑定库,在内部实现了许多的性能优化,可以选用。他的两个核心就是connect方法和Provider组件。

理解:

  • React是一个状态机,用来构建界面。他有自己的状态管理机制,通过状态来渲染页面,通过setState修改状态。
  • Redux是独立出来的一个状态管理工具,只用来管理状态。除了在react中,他还可以在vue、js、jquery中使用。
  • React-redux就是将React和Redux连接起来,将redux组件拆分成纯UI展示的,和负责处理逻辑和数据状态的两种组件,然后通过一个connect方法将两种组件连接起来。

connect方法:

有两个主要的可选参数,分别为mapStateToProps和mapDispatchToProps,作用分别是将state关联到props、将store.dispatch关联到props。而后在组件内使用state或者触发action,都可以从props中取值。

Provider组件:

作用是将redux的store注入到整个React应用中,然后通过Provider组件获取state对象,原理与react的context一样。

  • Redux-toolkit(RTK)

RTK还是Redux,旨在成为编写 Redux 逻辑的标准方式。

他是官方推荐的,是对redux二次封装的库,提供了开箱即用的工具集,大大的简化了redux的逻辑编码,解决了redux开发要手动编写的副作用钩子和上百个中间件,而逃不开的各种中间件与其目录规范......

同时建议使用@reduxjs/toolkit包,不再使用旧的redux核心包


原文地址:https://blog.csdn.net/wjs0406/article/details/136848736

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!