react中的mobx如何使用

前端开发   发布日期:2025年02月03日   浏览次数:183

这篇文章主要介绍“react中的mobx如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react中的mobx如何使用”文章能帮助大家解决问题。

1.新建一个mobx.jsx文件

  1. import { useContext } from "react"
  2. import MyContext from '../../utils/Context'
  3. //引入Observer监听组件 实现数据和视图层的双向改变
  4. import { Observer } from 'mobx-react'
  5. const Mobx = () => {
  6. //hook有规则 useContext只能在组件里面用
  7. const store = useContext(MyContext);
  8. return (
  9. <Observer>
  10. {() => {
  11. return (
  12. <div>
  13. <p>我是Mobx的应用</p>
  14. <ul>
  15. <li>mobx组件</li>
  16. <li>使用mobx 的数据 msg === {store.msg}</li>
  17. <li>使用mobx 的数据 number === {store.number}</li>
  18. <li>使用mobx 的数据 str === {store.str}</li>
  19. <li>mobx的计算属性 1 {store.double}</li>
  20. <li>mobx的计算属性 2 {store.tatal}</li>
  21. <button onClick={() => { store.changeNum() }}>改变munber</button>
  22. <button onClick={()=> {store.changeStr('柳林')}}>改变str</button>
  23. </ul>
  24. </div>
  25. )
  26. }}
  27. </Observer>
  28. )
  29. }
  30. export default Mobx

2.新建一个store文件夹 ---- 下面一个index.js文件

  1. //仓库文件 放所有的状态. 数据
  2. import { makeAutoObservable, runInAction, autorun, reaction } from "mobx"
  3. function createDoubler(value) {
  4. return makeAutoObservable({
  5. //这是放状态的
  6. msg: '我是公共数据',
  7. number: 20,
  8. str: '程小小',
  9. value,
  10. //关键字 get 就代表这是一个计算属性 函数内部必须要返回一个值
  11. get double() {
  12. return this.number * 2
  13. },
  14. //get 计算属性可以有多个
  15. get tatal() {
  16. return this.str + this.number
  17. },
  18. //actions 所有的方法 方法内部 内部可以放异步操作
  19. changeNum() {
  20. console.log('changeNum 函数执行了');
  21. //异步操作会报警号 ,但是不会报错 解决方法:用runInaction包起来
  22. setTimeout(() => {
  23. //如果action里面用了异步 ,最好将你异步里面改变state的那步操作 用runInaction包起来 ,可以优化一下
  24. runInAction(() => {
  25. this.number++
  26. })
  27. }, 2000)
  28. },
  29. changeStr(v) {
  30. this.str = v;
  31. }
  32. })
  33. }
  34. let store = createDoubler()
  35. //autorun 类似于监听 和可以写在组件里面
  36. autorun(() => {
  37. let a = store.number;
  38. console.log('autorun 执行了');
  39. })
  40. //Reaction 指定你要监听的东西 和监听的作用一样
  41. reaction(() => store.number, () => {
  42. console.log('reaction 函数执行了');
  43. })
  44. //导出一个对象
  45. export default store

3.新建一个context.jsx文件

  1. //把 创建context提出去
  2. import { createContext } from 'react'
  3. const MyContext = createContext()
  4. export default MyContext

以上就是react中的mobx如何使用的详细内容,更多关于react中的mobx如何使用的资料请关注九品源码其它相关文章!