react--Redux

Redux 是React最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行 作用:通过集中管理的方式管理应用的状态

不和任何框架绑定,不使用任何构建工具,使用纯Redux实现计数器

使用步骤:

1. 定义一个 reducer 函数 (根据当前想要做的修改返回一个新的状态)

2. 使用createStore方法传入 reducer函数 生成一个store实例对象

3. 使用store实例的 subscribe方法 订阅数据的变化(数据一旦变化,可以得到通知)

4. 使用store实例的 dispatch方法提交action对象 触发数据变化(告诉reducer你想怎么改数据)

5. 使用store实例的 getState方法 获取最新的状态数据更新到视图中

<button id="decrement">-</button>
<span id="count">0</span>
<button id="increment">+</button>

<script src="https://unpkg.com/redux@latest/dist/redux.min.js"></script>
1. 定义一个 reducer 函数 (根据当前想要做的修改返回一个新的状态)

2. 使用createStore方法传入 reducer函数 生成一个store实例对象

3. 使用store实例的 subscribe方法 订阅数据的变化(数据一旦变化,可以得到通知)

4. 使用store实例的 dispatch方法提交action对象 触发数据变化(告诉reducer你想怎么改数据)

5. 使用store实例的 getState方法 获取最新的状态数据更新到视图中
<script>
  //1. 定义reducer函数 
  // 内部主要的工作是根据不同的action 返回不同的state
  //state:管理的数据初始状态
  //action:对象type标记当前想要做什么样的修改
  function reducer(state = {count:0},action){
    //数据不可变,必须基于原始状态生成一个新的状态
  if(action.type==='INCREMENT'){
    return{count:state.count +1}
  }
  if(action.type==='DECREMENT'){
    return{count:state.count -1}
  }
  
  }

  // 2.使用reducer函数生成store实例
const store = Redux.createStore(reducer)

 
  // 3.使用store实例的 subscribe方法 订阅数据变化
  //回调函数可以在每次state发生变化的时候自动执行

  store.subscribe(()=>{
    console.log('state发生变化le',store.getState());
    document.getElementById('count').innerText=store.getState().count
    

  })

  
 //4. 使用store实例的 dispatch方法提交action对象 触发数据变化
  const inBtn = document.getElementById('increment')
  inBtn.addEventListener('click', () => {
     // 增
     store.dispatch({
        type:'INCREMENT'
     })
  })
  // 减
  const dBtn = document.getElementById('decrement')
  dBtn.addEventListener('click', () => {
    store.dispatch({
        type:'DECREMENT'
  })
  })
//   5. 使用store实例的 getState方法 获取最新的状态数据更新到视图中

</script>

为了职责清晰,数据流向明确,Redux把整个数据修改的流程分成了三个核心概念,分别是:state、action和reducer

1. state - 一个对象 存放着我们管理的数据状态

2. action - 一个对象 用来描述你想怎么改数据

3. reducer - 一个函数 更具action的描述生成一个新的state

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值