React的mobx使用方式

一、创建文件

stores
----- auth.js 例子文件
----- index.js 总入口

二、安装

yarn add mobx
yarn add mobx-react

三、书写相应代码

auth.js

  1. import相应的文件

import { observable, action } from "mobx"
  1. 声明class类,并导出

class AuthStore {
    @observable 变量名 = 值
    @boservable values = {
        username = "梁又文"
        sex = "男"
    }
    
    @action 方法名(参数) {
        console.log(参数)
    }
    @action setName(name){
        this.values.username = name
    }
}

export { AuthSotre }

index.js

  1. import相应文件

import React, { createContext, useContext } from "react"
import { 类名 } from "../stores/文件名"
import { AuthSotre } from "../stores/auth"
  1. 创建Context对象

const context = createContext({
    定义方法名: new 类名(),
    authStore: new AuthStore()
})
  1. 将Context对象全局导出

export const useStores = () => useContext(context)

四、配置package.json

  1. 将react隐藏的webpack暴露出来,释放之前请先提交代码

yarn eject
  1. 安装插件

yarn add @babel/plugin-proposal-decorators
  1. 修改package.json

"babel": {
    "plugins": [
        ["@babel/plugin-proposal-decorators", {"legacy": true}]
    ],
    "presets": [
        "react-app"
    ]
}

五、在组件中进行使用

  1. import相应文件

import { observer } from "mobx-react"
import { useStores } from "../stores"
  1. 使用observer监控组件,并解构我们需要的对象出来并使用

const Demo = observer(()=>{
    const { AuthStore } = useStores()
   
    return (
        <>
            <h1>我是Demo组件</>
        </>
    )
})
  1. 解构后我们就可以使用该对象的属性及方法

const Demo = observer(()=>{
    const { AuthStore } = useStores()
    
    const changeName = () => {
        AuthStore.setName("改名字后的梁又文")
    }
   
    return (
        <>
            <h1>我是Demo组件,我的名字叫{ AuthStore.values.username }</h1>
            <button onClick={changeName}>改名字</button>
        </>
    )
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值