- redux js提供的一个可预测性(我们给一个固定的输入 那么必定可以等到一个结果)的状态容器
集中管理react中多个组件的状态 - redux是一个专门的状态管理库 在(vue中也可以使用 但是在react中会使用比较多)
需求场景
1.每个组件的状态需要共享的时候
2.组件需要改变另外一个组件的时候
3.中的状态需要在任何地方都可以拿到
三大场景:
1.单一的数据源 真个react中的状态都会被统一管理到store
2.state是只读的 我们不能够直接改变state 而是要通过触发redux中的特定方法来进行修改
3.使用纯函数执行修改操作:action来改变redux中的state
下载 npm install --save redux
代码演示
<mark>App.js</mark>
import React, { useState } from 'react'
import Home from './components/Home'//引用创建的Home组件
export default function App() {
return (
<div className="App">
<div>
hello
<Home></Home>
</div>
</div>
)
}
export default App;
<mark>创建redux部分</mark>
使用redux实现加减功能
<mark>代码如下</mark>
reducer.js
var obj=[
{name:'xx',age:18}
]
export function data(state=obj[0].age,action){
switch(action.type){
case "ADD":
return state+action.data;
break;
case "DEL":
return state-action.data;
break;
default:
return state;
break;
}
}
stote.js
import {createStore} from "redux"
import {data} from "./reducer"
export var store=createStore(data)
action.js
// 增加
export const add=(num)=>{
return {type:"ADD",data:num}
}
// 减少
export const del=(num)=>{
return {type:"DEL",data:num}
}
Home.js
import React, { Component } from 'react'
import { store } from '../redux/stote'
import * as action from '../redux/action'
export default class Home extends Component {
constructor(props) {
super(props)
this.state = {
num: store.getState()
}
}
componentDidMount() {
store.subscribe(() => {
this.setState({
num: store.getState()
})
})
}
render() {
return (
<div>
home-----{this.state.num}
<button onClick={() => { store.dispatch(action.add(1)) }}>点我加1</button>
<button onClick={() => { store.dispatch(action.del(1)) }}>点我-1</button>
</div>
)
}
}
带有配套Demo,请看我发布的资源,免费下载,如果有用,请好评!!!