react mobx

全局状态管理系统(mbox):

安装:

yarn add mobx
yarn add mobx-react

store.js文件:

import {observable, computed, action, autorun,runInAction, makeObservable} from 'mobx';
class Store {
    @observable name= "xiaowang"
    //this指向,没有action函数无法触发
    constructor(){
        makeObservable(this);
    }
    @action setName=(text)=>{
        //this指向
        this.name = text
    }
}
export default Store

Router.js文件:

import React from 'react';

import { BrowserRouter } from 'react-router-dom';

import App from './App';

//这几个文件路径都是store文件

import {Provider} from 'mobx-react'

import FirstStore from './store/store'

import TwoStore from './store/twostore'

import NewStore from './store/app2'

import Store513 from './store/store513'

/*

src下新建文件夹(store

    store里写数据

    用的时候在React.js引入

    用多个时,写在对象里,属性:文件,用时调用属性

*/ 

//这样的方式方便

const stores = {

    first: new FirstStore(),

    two:new TwoStore(),

    three:new NewStore(),

    four:new Store513()
}
const Router = () => (
    <BrowserRouter>
//这个标签是新增的
        <Provider {...stores}>
            <App />
        </Provider>
    </BrowserRouter>
)

export default Router;

 

jsx文件:

import React from 'react'

import { withRouter, NavLink } from 'react-router-dom'

import { observer, inject } from 'mobx-react'

@withRouter //更新数据

@inject('three') //获取数据 可以进入多个,用,隔开

@observer //让页面变成响应式

class Top extends React.Component {

    componentDidMount(){

    }

    change({ target }) {

        const { setData } = this.props.three

        setData(target.value)
    }

    render() {

        const { name } = this.props.three

        return <div>

            {name}

            <input value={name} onChange={() => this.change()} />

        </div>

    }

}

export default Top
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值