redux_20221111

redux

基本使用

  1. 创建小皇帝
createStore()
  1. 创建老佛爷
export default (preState,action) => {
  修改数据
  return 修改后的数据
}
  1. 小皇帝和老佛爷关联生成store对象
createStore(reducer)
  1. 通过store对象的 getState 获取数据
  2. 通过store dispatch方法提交action 修改数据
  3. 通过store.subscribu 监听改变更新页面
  4. 组件销毁的时候销毁监听

通过自己写的高阶组件来优化redux的使用

react-redux 用来简化redux的使用

核心原理
  1. 将store的数据放到组件的上下文上
  2. 使用的时候先获取上下文的数据 通过高阶组件 放到props上
  1. 提供store数据
import store from "./store/index.js"
import {Provider} from "react-redux"
render() {
  return (
    <div>
      ...
      <Provider store={store}>
        <Fa><Fa>
      <Provider>
    </div>
  )
}
  1. 获取数据
    在需要的组件通过connect方法处理要使用的组件
import {connect} from "react-redux"
class Son extends React.component {
 
}

//  export default Son
epxort default connenct(state => state)(Son)

3.被connect处理组件就可以在props里访问 全局状态值
也可以使用porps里dispatch 修改数据

actioncreator

创建aciton
本质是一个对象,里面放了一堆的方法 通过这一堆的方法创建action

redux如果实现异步

redux-thunk
redux-promise
redux-saga

  1. 引入异步插件 redux-thunk //react-thunk
    import {creatStore,applyMiddleware} from “redux”
    import thunk from “redux-thunk”
    export default creatStore(reducer,applyMiddleware(thunk))
  2. 在actioncretore中使用
    export default {
    changeName() {
    return { type: ‘xxx’, playload: ‘xxx’}
    },
    changeAge() {
    return(dispatch) => {
    //写异步
    dispatch(acion)
    }
    }
    }

如何实现模块化

reducer中的模块化其实就是讲reducer进行拆分
拆分完毕通过combineReducers进行合并 同时添加模块名

let reducer = combineReducers({
  模块名1: reducer1,
  模块名2: reducer2
})

bindActionCreator mapActions mapMutations

在模块化的状态下获取数据
  1. 在原先 获取数据的基础上添加模块名
  2. 在 connect 进行出来(代码简化)
模块化下如何修改数据

和没有模块化一点都没变 还是通过dispatch 触发老佛爷
任何一个dispatch 会触发模块化所有的老佛爷
如果不同的模块下有相同的type类型 就会引发多次触发

  • 写type类型的时候自己注意点
  • 参考vue的namespace 在type类型的前面加模块名
    chagneName -> name/changeName name_changeName

使用常量来代替action types

  1. 找一个文件夹 reducer使用的 type 全部用常量保存起来
  2. reducer文件里需要用types 替换成常量
  3. actioncreatore文件里 把types用常量替换

类组件

  1. 创建一个类组件
  2. react中的数据重载
    state this.setState
    props 组件外部传递而来不能改
  3. 组件通信
    父子通信 props 传数据
    子父通信 props 传方法
    亲兄弟 状态提升 找个共有的父元素
    远方兄弟 上下文
    redux
  4. 生命周期
    挂载
    更新
    销毁
    shouldComponentUpdate
  5. ref
    • 绑dom
    • 绑组件
  6. context 上下文 provider consumer
  7. redux
    • 基本使用
    • react-redux
    • 异步中间件
    • 模块化

函数组件

16.8 hooks
hooks 弥补函数组价缺失的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goto_w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值