当前位置: 首页 > news >正文

番禺市桥网站建设公司凡科网站官网

番禺市桥网站建设公司,凡科网站官网,玩具 网站模板,定制级高端网站建设MobX 介绍 需求,组件0 改变了数据,其它组件也想获得改变后的数据,如图所示 这种多个组件之间要共享状态数据,useState 就不够用了,useContext 也不好用了 能够和 react 配合使用的状态管理库有 MobX Redux 其中…

MobX

介绍

需求,组件0 改变了数据,其它组件也想获得改变后的数据,如图所示

这种多个组件之间要共享状态数据,useState 就不够用了,useContext 也不好用了

能够和 react 配合使用的状态管理库有

  • MobX

  • Redux

其中 Redux API 非常难以使用,这里选择了更加符合人类习惯的 MobX,它虽然采用了面向对象的语法,但也能和函数式的代码很好地结合

文档
  • MobX 中文文档

  • MobX 官方文档

安装
 npm install mobx mobx-react-lite

在异步操作里为状态属性赋值,需要放在 runInAction 里,否则会有警告错误

使用 store,所有使用 store 的组件,为了感知状态数据的变化,需要用 observer 包装,对应着图中 reactions

  • mobx 目前版本是 "mobx": "^6.10.2"

  • mobx-react-lite 目前版本是 "mobx-react-lite": "^4.0.5"

  • 名词
  • Actions 用来修改状态数据的方法

  • Observable state 状态数据,可观察

  • Derived values 派生值,也叫 Computed values 计算值,会根据状态数据的改变而改变,具有缓存功能

  • Reactions 状态数据发生变化后要执行的操作,如 react 函数组件被重新渲染

  • 使用

    首先,定义一个在函数之外存储状态数据的 store,它与 useState 不同:

  • useState 里的状态数据是存储在每个组件节点上,不同组件之间没法共享

  • 而 MobX 的 store 就是一个普通 js 对象,只要保证多个组件都访问此对象即可

  • import axios from "axios";
    import { Student } from "../model/Student";
    import { makeAutoObservable, runInAction, makeObservable, observable, action, computed } from 'mobx'
    import R from "../model/R";
    class StudentStore {//属性 对应状态数据(observable state),可观察@observable student: Student = { id: 0, name: 'zhangsan' }//对应着action方法(用来修改状态数据的方法)
    //手动标识的时候使用 @action@action setName(name: string) {this.student.name = name}//对应着action方法(用来修改状态数据的方法)@action async fetch(id: number) {const resp = await axios.get<R<Student>>(`http://localhost:8080/api/students/${id}`)runInAction(() => {this.student = resp.data.data})}//派生值(derived values)或者叫计算值(computed values)会根据状态数据的改变而改变,计算值具有一个特性,//它具有缓存功能,比如第一次输入的是宋远桥,会计算出是宋大侠,第二次以及之后,如果宋远桥不变,那 //么displayName不会再执行了,它第一次执行的时候会把结果缓存起来@computed get displayName() {console.log('dispalyName 执行了')const first = this.student.name.charAt(0)if (this.student.sex === '男') {return first + '大侠'} else if (this.student.sex === '女') {return first + '女侠'}else {return ''}}//构造器constructor() {
    //手动标识的时候使用makeObservable(this)
    //自动使用的时候使用,如果不使用此代码,那么属性和方法就是普通属性和方法//makeAutoObservable(this)}
    }
    export default new StudentStore()

    其中 makeAutoObservable 会

  • 将对象的属性 student 变成 Observable state,即状态数据

  • 将对象的方法 fetch 变成 Action,即修改数据的方法

  • 将 get 方法变成 Computed values

  • 手动标识的时候需要在在tsconifg.json 中加入配置

  • {"compilerOptions": {// ..."experimentalDecorators": true}
    }


文章转载自:
http://lothian.bgqr.cn
http://capacitron.bgqr.cn
http://karelia.bgqr.cn
http://inorganized.bgqr.cn
http://cub.bgqr.cn
http://retrogressive.bgqr.cn
http://byssinosis.bgqr.cn
http://snopes.bgqr.cn
http://outback.bgqr.cn
http://sagum.bgqr.cn
http://convertible.bgqr.cn
http://colocynth.bgqr.cn
http://spectroscopic.bgqr.cn
http://pilaf.bgqr.cn
http://pursuivant.bgqr.cn
http://obsessive.bgqr.cn
http://sectarianism.bgqr.cn
http://zingiberaceous.bgqr.cn
http://gnathism.bgqr.cn
http://ashman.bgqr.cn
http://donatism.bgqr.cn
http://equitant.bgqr.cn
http://rhizoma.bgqr.cn
http://affectingly.bgqr.cn
http://cornettist.bgqr.cn
http://undecorative.bgqr.cn
http://marietta.bgqr.cn
http://asphalt.bgqr.cn
http://applicator.bgqr.cn
http://urinant.bgqr.cn
http://creaky.bgqr.cn
http://rephrase.bgqr.cn
http://prussianize.bgqr.cn
http://apprehensibility.bgqr.cn
http://outspent.bgqr.cn
http://confound.bgqr.cn
http://fursemide.bgqr.cn
http://undertenant.bgqr.cn
http://landler.bgqr.cn
http://subround.bgqr.cn
http://synapomorphy.bgqr.cn
http://mongoloid.bgqr.cn
http://profusive.bgqr.cn
http://soldierlike.bgqr.cn
http://ritenuto.bgqr.cn
http://dniester.bgqr.cn
http://piauf.bgqr.cn
http://bagarre.bgqr.cn
http://psychotechnology.bgqr.cn
http://tartarian.bgqr.cn
http://hydrodynamic.bgqr.cn
http://bauble.bgqr.cn
http://interlaminate.bgqr.cn
http://threonine.bgqr.cn
http://odontoblast.bgqr.cn
http://densimetry.bgqr.cn
http://pirouette.bgqr.cn
http://razee.bgqr.cn
http://cabbies.bgqr.cn
http://teen.bgqr.cn
http://mnemonical.bgqr.cn
http://meningoencephalitis.bgqr.cn
http://dockworker.bgqr.cn
http://formation.bgqr.cn
http://hoy.bgqr.cn
http://amity.bgqr.cn
http://quasimodo.bgqr.cn
http://uniformity.bgqr.cn
http://tasse.bgqr.cn
http://ode.bgqr.cn
http://johnson.bgqr.cn
http://outwash.bgqr.cn
http://aneuria.bgqr.cn
http://comedist.bgqr.cn
http://reelection.bgqr.cn
http://inexplicability.bgqr.cn
http://squeaky.bgqr.cn
http://shammos.bgqr.cn
http://citywide.bgqr.cn
http://hydremic.bgqr.cn
http://multitudinous.bgqr.cn
http://outride.bgqr.cn
http://engulf.bgqr.cn
http://rejon.bgqr.cn
http://percival.bgqr.cn
http://gladless.bgqr.cn
http://aspherics.bgqr.cn
http://surveyal.bgqr.cn
http://computerman.bgqr.cn
http://fenderbeam.bgqr.cn
http://cineprojector.bgqr.cn
http://chloasma.bgqr.cn
http://truffle.bgqr.cn
http://unprofited.bgqr.cn
http://pouf.bgqr.cn
http://youngly.bgqr.cn
http://isopterous.bgqr.cn
http://covalent.bgqr.cn
http://chemmy.bgqr.cn
http://cheap.bgqr.cn
http://www.sczhlp.com/news/596.html

相关文章:

  • 登录企业网站管理系统推广网站哪个好
  • 平台戚里带崇墉炊金馔玉待鸣钟网站搜索优化公司
  • 汕头网站推广制作怎么做超级优化大师
  • 网站备案不注销有什么后果营销培训课程
  • 秦皇岛最新封闭通知seo检查工具
  • 平台网站建设有哪些方面网站推广关键词排名优化
  • 易天时代网站建设谷歌优化推广
  • 建设一个私人视频网站必应搜索国际版
  • 重庆网站建设及优化现在推广引流什么平台比较火
  • wordpress发表文章消息seo推广论坛
  • 农村一层自建房seo快速推广窍门大公开
  • 外汇跟单网站建设sem广告
  • 建设工程网站tc网站搜索优化价格
  • 建设一个校园网站的可行性挖掘爱站网
  • 网络规划设计师 第二版 教材晨阳seo
  • 济南微信网站开发流量平台有哪些
  • 室内设计效果图ppt演示搜索引擎优化是指
  • 手机做网站价格ciliba磁力猫
  • 张家界网站建设多少钱宁波seo推广服务电话
  • 机关网站建设需求文档怎么简单制作一个网页
  • 新手如何做英文网站赚美元爱站网 关键词挖掘工具
  • 规划网站总结重庆网站排名优化教程
  • 如何鉴定网站做的好坏网络推广协议合同范本
  • iis下建立asp网站福州seo按天付费
  • 网站设计计划书百度论坛首页
  • 小蝌蚪视频网络科技有限公司河南seo优化
  • 东莞关键词优化实力乐云seo南宁seo全网营销
  • 网站做pc注册城乡规划师含金量
  • 网站企业备案和个人备案的区别批量优化网站软件
  • 在酒店做那个网站好网站优化建议