程序笔记   发布时间:2022-07-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了react-mobx,react-mobx6使用案例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

脚手架 create-react-app

 

目录

一、安装

二、配置package.json

三、定义mobx的store

四、在页面中使用mobx,并且通过action 改变mobx


 

一、安装

//npm yarn 随需求,尽量不要混用,混用有些资源可能会出现掉包
yarn add mobx
yarn add mobx-react


// 版本号
"@H_655_44@mobx": "^6.3.2",
"@H_655_44@mobx-react": "^7.2.0",

 

 

react-mobx,react-mobx6使用案例

二、配置package.json

1.把隐藏的webpack暴露出来,释放之前记得请先提交代码 git commit 一次

yarn run eject

react-mobx,react-mobx6使用案例

2.安装@babel/plugin-proposal-decorators 插件 必须的

yarn add @babel/plugin-proposal-decorators

 3.修改添加 package.json配置 (手动)

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

 

三、定义mobx的store

1.目录机构(mobx支持多个多个状态模块)

stores ----- auth.js 模块1

----- test.js 模块2 ----- index.js 总入口

react-mobx,react-mobx6使用案例

react-mobx,react-mobx6使用案例

2.模块 auth.js

// auth.js和test.js 一模一样 展示auth.js做案例
// @action.bound 和  @action 区别 https://cn.mobx.js.org/refguide/action.html
import { observable, action, computed } from "mobx";
import { makeObservablE} from "mobx";

export class AuthStore {
    // 定义变量
    @observable name = 'zhangsan000';
    @observable sex =  '男';
    @observable userObj = {
        name: 'zhangsan000',
        age: 233,
        token: '12345689'
    }

    // 初始化
    constructor() {
        // mobx6版本以后 必须得在初始化加makeObservable
        makeObservable(this);
        
    }

    // 动作(bound 可以自动绑定this 防止this 指向改变)
    @action.bound
    setName(v) {
        console.log('触发action');
        this.name = v;
        
    }
    @action
    setUserObj(obj) {
        this.userObj = obj;
    }

    // 计算属性
    @computed get titlename(){
        return this.name+'___111';
    }
    
    
}

react-mobx,react-mobx6使用案例

3.定义导出出口index.js

import { AuthStore } from "./auth";
import { TestStore } from "./test";

export const store = {
    authStore: new AuthStore(),
    testStore: new TestStore()
};

  

4.在react 工程入口 导入 

import { store } from  './store/index';
import { Provider} from 'mobx-react';

ReactDOm.render(
  <React.StrictMode>
    <Provider store = {storE}>
      <App  />
    </Provider>
  </React.StrictMode>,
  document.getElementById('root')
);

 

react-mobx,react-mobx6使用案例

四、在页面中使用mobx,并且通过action 改变mobx

import React, { Component, PureComponent } from "react";
import { observer, inject } from 'mobx-react';

@inject( 'store')
@observer
class Index extends PureComponent {
    
    constructor(props) {
        super(props);
        console.log(this.props);
        this.state = {  };
    }
    render() {
        const { authStore, testStore } = this.props.store;
        return (
            <div>
                {authStore.namE}/
                
                {testStore.namE}/

                {authStore.titlename}
                <br />
                <button onClick = { () => { 
                    authStore.setName(new Date().getTime()); 
                } }>点击按钮触发action</button>
            </div>
        );
    }
}

export default Index;

 

react-mobx,react-mobx6使用案例

大佬总结

以上是大佬教程为你收集整理的react-mobx,react-mobx6使用案例全部内容,希望文章能够帮你解决react-mobx,react-mobx6使用案例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。