React 18 仿携程项目实战【十六】获取store中的数据&向store传递数据

安装Reudx

npm install redux@4.2.0

使用步骤如下: 

Reudx.tsx

Store.tsx

通过createStore()创建(已弃用),并导出

import { createStore } from "redux";

export const store = createStore(languageReducer);

languageReducer.tsx

接受 state 和 action 两个参数,并返回新的状态,

其中 action 包含typepayload两个属性

export const languageReducer= (state,action)=>{
    switch( action.type ){
        case xxx:
            return {...state, language: action.payload}
        case xx:
            return xxxxx
        default:
            return state
    }
}

<!--switch条件语句:
            switch (条件){
                case 条件1:

                    满足条件1时执行语句;        
                    break;
                case 条件2:

                    满足条件2执行语句;        
                    break;
                default:

                    默认时执行语句;
                    break;
            }
            --> 

 组件

以下是类组件使用方法:

引入导出的store

通过getState方法获取store中的数据(类组件必须用在constructor中)

const storeState = store.getState();

constructor中初始化数据:

this.state = { //将store中数据赋值给本组件中
       language: storeState.language,
       languageList: storeState.languageList
}

通过subscribe方法实时订阅store中的数据(类组件最好用在constructor中)

store.subscribe(this.languageChange)

languageChange=()=> {
           //通过getState获取store更新后的数据,再用setState()更新本身组件的state
      const subState = store.getState();
      this.setState({
           language:subState.language,
           languageList: subState.languageList
      })
}

注: subscribe()订阅方法最好用在constructor构造函数或者componentDidMount()初次渲染UI函数中,作用如下:

通过dispatch方法传递数据给store 

store.dispatch({
    type: "xxxx",
    payload:xxx,
})

参考笔记

补充:

console.info(actions.payload)
// 等同于
console.log(actions.payload)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值