react 中 mobx的使用案例详解

 更新时间:2023年04月12日 14:22:34   作者:顾洛笙  
这篇文章主要介绍了react 中 mobx的使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.新建一个mobx.jsx文件

import { useContext } from "react"
import MyContext from '../../utils/Context'
//引入Observer监听组件  实现数据和视图层的双向改变
import { Observer } from 'mobx-react'

const Mobx = () => {
    //hook有规则  useContext只能在组件里面用
    const store = useContext(MyContext);

    return (
        <Observer>
            {() => {
                return (
                    <div>
                        <p>我是Mobx的应用</p>
                        <ul>
                            <li>mobx组件</li>
                            <li>使用mobx 的数据 msg === {store.msg}</li>
                            <li>使用mobx 的数据 number === {store.number}</li>
                            <li>使用mobx 的数据 str === {store.str}</li>
                            <li>mobx的计算属性 1 : {store.double}</li>
                            <li>mobx的计算属性 2 : {store.tatal}</li>
                            <button onClick={() => { store.changeNum() }}>改变munber</button>
                            <button onClick={()=> {store.changeStr('柳林')}}>改变str</button>
  
                        </ul>
                    </div>
                )
            }}
        </Observer>

    )
}
export default Mobx

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

//仓库文件  放所有的状态. 数据 
import { makeAutoObservable, runInAction, autorun, reaction } from "mobx"

function createDoubler(value) {

    return makeAutoObservable({

        //这是放状态的
        msg: '我是公共数据',
        number: 20,
        str: '程小小',
        value,

        //关键字 get 就代表这是一个计算属性 函数内部必须要返回一个值
        get double() {
            return this.number * 2
        },

        //get 计算属性可以有多个
        get tatal() {
            return this.str + this.number
        },

        //actions  所有的方法 方法内部   内部可以放异步操作
        changeNum() {
            console.log('changeNum 函数执行了');

            //异步操作会报警号 ,但是不会报错  解决方法:用runInaction包起来

            setTimeout(() => {
                //如果action里面用了异步 ,最好将你异步里面改变state的那步操作 用runInaction包起来 ,可以优化一下
                runInAction(() => {
                    this.number++
                })

            }, 2000)
        },

        changeStr(v) {
            this.str = v;

        }

    })
}

let store = createDoubler()

//autorun 类似于监听  和可以写在组件里面
autorun(() => {
    let a = store.number;
    console.log('autorun 执行了');
})

//Reaction 指定你要监听的东西  和监听的作用一样
reaction(() => store.number, () => {
    console.log('reaction 函数执行了');
})


//导出一个对象
export default store

3.新建一个context.jsx文件

//把 创建context提出去
import { createContext } from 'react'

const MyContext = createContext()

export default MyContext

到此这篇关于react 中 mobx的使用案例详解的文章就介绍到这了,更多相关react mobx使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Reactjs + Nodejs + Mongodb 实现文件上传功能实例详解

    Reactjs + Nodejs + Mongodb 实现文件上传功能实例详解

    今天是使用 Reactjs + Nodejs + Mongodb 实现文件上传功能,前端我们使用 Reactjs + Axios 来搭建前端上传文件应用,后端我们使用 Node.js + Express + Multer + Mongodb 来搭建后端上传文件处理应用,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-06-06
  • 简易的redux createStore手写实现示例

    简易的redux createStore手写实现示例

    这篇文章主要介绍了简易的redux createStore手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • React星星评分组件的实现

    React星星评分组件的实现

    评分插件在购物的应用中经常可以看得到,但是用着别人的总是没有自己写的顺手,本文就使用React实现星星评分组件,感兴趣的可以了解一下
    2021-06-06
  • React如何避免子组件无效刷新

    React如何避免子组件无效刷新

    这篇文章主要介绍了React几种避免子组件无效刷新的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 浅谈react.js 之 批量添加与删除功能

    浅谈react.js 之 批量添加与删除功能

    下面小编就为大家带来一篇浅谈react.js 之 批量添加与删除功能。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 在React中强制重新渲染的4 种方式案例代码

    在React中强制重新渲染的4 种方式案例代码

    这篇文章主要介绍了在React中强制重新渲染的4 种方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • React Flux与Redux设计及使用原理

    React Flux与Redux设计及使用原理

    这篇文章主要介绍了React Flux与Redux设计及使用,Redux最主要是用作应用状态的管理。简言之,Redux用一个单独的常量状态树(state对象)保存这一整个应用的状态,这个对象不能直接被改变
    2023-03-03
  • 五分钟教你了解一下react路由知识

    五分钟教你了解一下react路由知识

    本文主要介绍了react路由知识,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 使用useEffect模拟组件生命周期

    使用useEffect模拟组件生命周期

    这篇文章主要介绍了使用useEffect模拟组件生命周期,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • React使用refs操作DOM方法详解

    React使用refs操作DOM方法详解

    React核心就在于虚拟DOM,也就是在React中不总是直接操作页面真实的DOM元素,并且结合Diffing算法,可以做到最小化页面重绘,有些时候不可避免的我们需要一种方法可以操作我们定义的元素标签,并作出对应的修改。在React中提供了一种访问DOM节点的方式,也就是这里的refs
    2022-11-11

最新评论