redux用于react中的状态管理,其中不能直接修改redux中的状态,需要通过dispatch方法才能修改react中的状态。
createStore函数中存放着状态信息state,它的执行结果返回一个store对象,返回的对象包含:
- getState(获取store中的state状态信息,但是不能直接修改store中的state信息)
- dispatch(修改store中的state信息)
- subscribe(用于订阅事件)
<div>
<div id="title"></div>
<div id="content"></div>
</div>
<script>
function createStore(reducer) {
// 定义store对象中的状态信息对象,此处必须是只定义不赋值,因为这样在下面的dispatch初始化state时才能使用默认值初始化state
let state;
// listener是一个事件池,存储订阅的方法
let listener = [];
// 在createStore作用域下创建getState函数,该函数需要返回一个新对象,该对象需要和state一样。这个方法只用于获取state
// 深克隆:将当前作用域下的state深克隆一份,让外界利用这个方法只能获取state不能修改state
let getState = () => JSON.parse(JSON.stringify(state))