redux的使用

Redux 概述

redux 是一个JavaScript 容器,用于进行全局的状态管理

Redux 三大核心

  1. 单一数据源
    整个应用的state被存储哎一颗object tree 中,并且这个object tree只存在于唯一一个store中

  2. state 是只读的
    唯一改变state的方法就是出发action,action是一个描述已发生时间的普通对象

  3. 使用纯函数进行修改‘
    为了描述action如何改变state tree ,需要编写reduces
    reduces 只是一些纯函数,他接受先前的 state和action.可以复用,可以控制顺序,传入附加参数

Redux 的组成

1. state 状态

就是我们传递的数据,那么我们在用React开发项目的时候,大致可以把state分为三类

  • DomainData:可以理解为服务器端的数据,比如:获取用户信息,商品列表等等。
  • UI State :决定当前展示的状态,比如:弹框的显示隐藏,受控组件等等
  • App State:App级别的状态,比如:当前是否请求Loading,当前路由信息等可能被多个组件去使用的到的状态

Action 事件

  • 本质就是一个JS对象
  • 必须包含type属性
  • 只是描述了有事情要发生,并没有描述如何去更新state

Reduce

  • 本质就是函数
  • 响应发送过来的action
  • 函数接收两个参数,一个是初始化state
  • 必须要有return 返回值

Store

  • 用来把avtion和reducer关联到一起的
  • 通过createStore 来构建store
  • 通过苏subscribe来注册监听
  • 通过dispatch 来发送action
  • 通过getState 获取state

react-redux

react-redux由Provider 和connect组成

Provider

  • Provider 包裹在根组件在外层,使所有的子组件都可以拿到State
  • Proder 接受store 作为props ,然后通过context往下传递,这样react中任何组件都可以通过context获取到store

connect

  • Provider内部组件如果想要使用到state中的数据,就 必须要connect进行一层包裹封装,话一句话说就是必须要被connect进行加强
  • connect 就是方便我们组件能够获取到store 中的state

Redux 的 使用流程

在这里插入图片描述

npm install redux

store/index

	import {createStore} from 'redux'
	import reduce from './reduce';
	let store= createStore(reduce);
	export default store;

store/reduce.js

let defaultState = {name:'li'}
function reduce(state=defaultState,action){
	switch(action.type){
		case 'SET_NAME':
		return {
			...state,
			name:action.name
		}
	}

}
export default reduce;

index.js

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import store from './store;
import {Provider} from 'react-redux';

const rootElement = document.getElementById("root");
ReactDOM.render(
  <React.StrictMode>
  <Provider store={store}>
    <App />
    </Provider>
  </React.StrictMode>,
  rootElement
);

redux异步处理

import {createStore,applyMiddleware} from 'redux';
import reduce from './reduce/index.js';
import thunk from 'redux-thunk'
let store = createStore(reduce ,applyMiddleware(thunk));

export default store;

//redux中的中间件都放到applyMiddleware中使用

多个recude合并

import {createStore,combineReducers} from 'redux';
import reduce from './reduce/index.js';
import nameReduce from './reduce/nameReduce';
let reduces = combineReducers({
    reduce,
    nameReduce
})
let store = createStore(reduces);

export default store
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值