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

如何做学校网站做品管圈网站

如何做学校网站,做品管圈网站,网站合作客户,wordpress教程视频教程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://www.yayakq.cn/news/707741/

相关文章:

  • 关于建设公司网站的申请网站建设可行分析性报告
  • 网站建设推广是什么意思建筑工程项目信息查询
  • aspx网站实例网页设计开发招聘
  • 网站首页分辨率做多大的在一家传媒公司做网站编辑 如何
  • 做招投标有哪些网站南京响应式网站建设
  • 软件系统开发要多少钱广东网站优化
  • wordpress 经典网站做网站公司需要准备资料
  • 北京搭建网站驻马店行业网站建设源码
  • 如何做网站卡密收录情况
  • 制作一个公司网站的流程莆田市网站建设
  • flash网站建设个人简介互联网保险的风险
  • 自己做网站优化wordpress三栏博客主题
  • 苏州专业的网站建设公司自己做网站打开很卡
  • 做网站 做app好网站建设及优化心得体会
  • 物流网站建设合同范本宁波网站模板哪家性价比高
  • 昆明专业网站排名推广网站设置字体样式
  • 购买网站外链什么是互联网公司
  • 做网站的公司搞什么活动网站编程语言培训机构
  • 在线可以做翻译的网站吗天迈装饰网站建设项目
  • 使用flashfxp上传网站微信开放平台怎么注册
  • 微信网站建设 知乎网站建设南京公司网站建设
  • 网站开发要用多少钱梅县区住房和城乡规划建设局网站
  • 中国建设机械网网址网站优化工具分析工具
  • 网站建设中源码下载wordpress如何使用一个的模板
  • 简单大方网站一分钟建站
  • 网站做数据监测推广话术
  • asp建设网站需要了解什么最新招商代理项目
  • 企业网站怎么做排名温州外经贸局网站
  • 阜阳 做网站电商网站设计公司力推亿企邦
  • 随州网站建站杭州logo设计公司哪家好