新建一个store文件夹,新建
state.js/reducer.js/store.js/action.js文件
state.js用来存放全局状态值,store.js用来创建全局状态对象并和执行相关操作的reducer.js相关联,在
store.js中引入createStore创建对象的方法:import {createStore} from 'react',然后引入reducer.js文件,接着创建全局对象

actions.js文件中存放修改全局状态值的数据,需要引入store.js文件中的全局状态对象,然后引用其中的dispatch方法将修改的内容传递给reducer修改,

其中,type需要按照规定书写,其中的内容可以更改,其他的内容亦可更改
reducer.js文件中执行由actions中传递过来的方法,并按照type的值来执行对应的方法
import state from './state'
export default(prevState=state,actions)=>{
let newDate = prevState
let {type,payload} = actions
switch (type) {
case 'ADD':
newDate.list.unshift({msg:payload,status:false})
break;
default:
break;
}
return newDate
}
需要将type和payload等数据解构出来,由于是个函数所以需要将修改后的数据返回,
在其他需要使用全局状态值的组件页面中,可以通过引入store对象,然后通过
store.getState()来获取由reducer.js处理过后的数据,(如果reducer.js函数中没有return修改后的数据,那么store.getState() 将获取不到数据)
最后在引用全局状态值的组件中,通过componentDidMount()生命周期使用重新渲染的方法来使页面更新,必要时考虑性能优化,即,如果数据一样则不渲染
componentDidMount(){
Store.subscribe(()=>{
this.setState({})
})
}
this.setState({})中放空对象的原因是使其触发状态值更新