Mobx的使用

简介: Mobx的使用

安装语法



yarn add mobx

yarn add mobx-react


类组件



一、在src下创建store文件创建index.js里引入以下代码


import { observable, computed, action, autorun, runInAction } from 'mobx';
// import {observable, computed, action} from 'mobx';
class Store {
  @observable tradeCfg = {
    'sadf': 'sadf'
  };
  @observable baseInfo = {};
  @observable callback = null;
  @observable token = [
    {
      "id": 1,
      "name": "YD"
    },
    {
      "id": 2,
      "name": "ETH"
    }
  ];
}
export default Store;


二、 在router.js里


1.引入import { Provider } from 'mobx-react';

2.引入我们创建的store.js(多个或一个)

3.使用store需要new一下 new Store 因为store里是面向对象4.用Provider进行包裹 {…stores}


@语法糖报错


解决办法安装下面两个命令


yarn add @babel/plugin-proposal-decorators

yarn add @babel/plugin-proposal-class-properties


安装完成后把package.json里的babel里的presets替换掉


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


三、任意子页面上使用mobx


1.引入import { withRouter } from 'react-router-dom';


2.引入import { observer, inject } from 'mobx-react';


3.在类组件上引入@withRouter @inject('Fstore') @observer


4.在render下打印props


函数组件


1.引入import { withRouter } from 'react-router-dom'

2.引入import { observer, MobXProviderContext } from 'mobx-react'

3.自定义一个函数


作用是:相当于把React.useContext(MobXProviderContext).Fstore进行封装

减少大量的.操作


function useStores(name) { return React.useContext(MobXProviderContext)[name] }


4. 用withRouter包裹observer包裹组件


例如:

withRouter(observer(Mobx))


等同于

@withRouter @inject('Fstore') @observer


调用方式

const { tradeCfg } = useStores('Fstore')


相关文章
|
JavaScript 前端开发 中间件
useReducer+createContext真的可以代替Redux吗?
useReducer+createContext真的可以代替Redux吗?
153 0
|
3月前
|
JavaScript 前端开发 中间件
像Vuex一样使用redux
【8月更文挑战第16天】像Vuex一样使用redux
28 2
像Vuex一样使用redux
|
3月前
|
存储 JavaScript 前端开发
什么是 Redux?
【8月更文挑战第30天】
39 0
|
6月前
|
存储 JavaScript 前端开发
了解 redux 么,说一下 redux 吧
了解 redux 么,说一下 redux 吧
60 0
|
存储 JavaScript 前端开发
什么是Redux?
什么是Redux?
|
JavaScript 中间件
React-Redux-thunk
React-Redux-thunk
46 0
|
JavaScript
Redux中 combineReducers的使用
Redux中 combineReducers的使用
|
JavaScript 前端开发
什么是redux?如何在react 项目中使用redux?
什么是redux?如何在react 项目中使用redux?
102 0
|
存储 JavaScript 前端开发
MobX or Redux ? #81
MobX or Redux ? #81
88 0
|
JavaScript 前端开发 中间件
redux&react-redux(一)
redux&react-redux(一)
redux&react-redux(一)