redux成员、store成员、redux的数据流转、redux如何配合react-redux使用?react-redux的常用API、react-redux、redux和vuex的区别是什么?

本文深入探讨Redux的状态管理,包括其三大原则、安装与成员、数据流及与react-redux的结合使用。此外,还分析了react-redux解决的问题、API以及与Vuex的差异。
摘要由CSDN通过智能技术生成


前言

  1. Redux是为javascript应用程序提供一个可预测(根据一个固定的输入,必然会得到一个固定的结果)的状态容器。可以运行于服务端,客户端,原生应用,从Flux演变而来。简单容易上手

  2. 集中的管理react中多个组件的状态

  3. redux是专门作状态管理的js库,并不是react的插件库,也可以用在其他js框架中,例如vue,但是基本用在react中

  4. 可以同一个地方查询状态,改变状态,传播状态,用在中大项目。如下场景:组件状态需要共享,在任何地方都可以拿到,组件需要改变全局状态,一个组件需要改变另外一个组件的状态。创建store实例,其它组件导入并共享这个store实例

一、redux

1.redux三大原则

1)、单一数据源
2)、State 是只读的
3)、使用纯函数来执行修改

2.redux的安装

安装稳定版:
npm install --save redux
yarn add redux
在这里插入图片描述

附加包:多数情况下,你还需要使用 React 绑定库和开发者工具。
npm install --save react-redux
npm install --save-dev redux-devtools

3.redux成员

在这里插入图片描述

4.store成员

在这里插入图片描述

5.数据流动

在这里插入图片描述

6.redux操作流程

//安装:
yarn add redux

//一、创建reducer
// 参数:
// state:原始的state
// action:要做的事情,动作的类型
// 返回值:必须要有,是新的state(修改后的state)。getState()函数会调用reducer
// reducer要求是个纯函数(在函数内部不能修改函数的参数(输入),要有返回值)
//通过组件修改store中的state(数据)),修改store中的state(数据)后,还需要把数据响应到组件上,就需要使用 subscribe。
//它的功能是:传入旧的state,根据action对state做操作,返回新的state。
import {
   createStore} from 'redux'

const reducer = (state,action)=>{
   
  let {
   type,payload}=action    
  swtich (type){
   
  	case XXXXX :{
   
    	  //数据的逻辑处理
      	return {
   
	          ...state,
	          属性名:新的值
	      }
  	}   
  	default:
	    return state
  }
}

//二、创建state对象
// 仓库里的数据
export default {
   
    count:0
}

//三、创建store对象(仓库)
//使用createStore(对仓库的操作,仓库的数据)
//创建仓库时,需要说清楚仓库中存储的数据(state),以及对数据的操作(reducer)
store = createStore(reducer,state)
export default store;

//四、在组件内部使用仓库(如:获取仓库的数据,修改仓库的数据,添加,删除)
import store from '...'
store.getState() //获取状态,执行一次
store.dispatch({
   type:xxx,payload:ooo}) //发送action给reducer  type是必传参数
store.subscribe(回调)  //订阅 state  更新state时触发

7.action里处理异步

需要安装中间件 redux-thunk ,redux-thunk可以增强dispatch的功能,让dispatch可以接受一个函数作为参数。

./src/plugins/redux.js

//安装中间件改装 redux
import {
   createStore,applyMiddleware} from 'redux'
import thunk from 'redux-thunk'

let store = createStore(reducer,state,applyMiddleware(thunk));

./src/store/actionCreators
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值