React的mobx使用方式

tech2024-01-15  79

一、创建文件

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

二、安装

yarn add mobx yarn add mobx-react

三、书写相应代码

auth.js

import相应的文件 import { observable, action } from "mobx" 声明class类,并导出 class AuthStore { @observable 变量名 = 值 @boservable values = { username = "梁又文" sex = "男" } @action 方法名(参数) { console.log(参数) } @action setName(name){ this.values.username = name } } export { AuthSotre }

index.js

import相应文件 import React, { createContext, useContext } from "react" import { 类名 } from "../stores/文件名" import { AuthSotre } from "../stores/auth" 创建Context对象 const context = createContext({ 定义方法名: new 类名(), authStore: new AuthStore() }) 将Context对象全局导出 export const useStores = () => useContext(context)

四、配置package.json

将react隐藏的webpack暴露出来,释放之前请先提交代码 yarn eject 安装插件 yarn add @babel/plugin-proposal-decorators 修改package.json "babel": { "plugins": [ ["@babel/plugin-proposal-decorators", {"legacy": true}] ], "presets": [ "react-app" ] }

五、在组件中进行使用

import相应文件 import { observer } from "mobx-react" import { useStores } from "../stores" 使用observer监控组件,并解构我们需要的对象出来并使用 const Demo = observer(()=>{ const { AuthStore } = useStores() return ( <> <h1>我是Demo组件</> </> ) }) 解构后我们就可以使用该对象的属性及方法 const Demo = observer(()=>{ const { AuthStore } = useStores() const changeName = () => { AuthStore.setName("改名字后的梁又文") } return ( <> <h1>我是Demo组件,我的名字叫{ AuthStore.values.username }</h1> <button onClick={changeName}>改名字</button> </> ) })
最新回复(0)