React中的状态管理---Mobx

简介: React中的状态管理---Mobx

Mobx的介绍

Mobx是一个功能强大,上手非常容易的状态管理工具。redux的作者也曾经向大家推荐过它,在不少情况下可以使用Mobx来替代掉redux。

16ad01f9346732a5_tplv-t2oaga2asx-image.png

Mobx使用流程

创建项目

npx create-react-app mobx

进入项目

cd mobx

项目抽离

yarn eject

安装mobx mobx-react

yarn add mobx mobx-react


注意: 如果git冲突


 解决: 我们要原操作先放到本地暂存盘


 git add .


 git commit -m '安装mobx  mobx-react'


 注意不要git push

配置装饰器(修饰器 es6 ) babel

yarn add babel-plugin-transform-decorators-legacy -D
yarn add @babel/preset-env -D
yarn add babel-plugin-transform-class-properties -D
yarn add @babel/plugin-proposal-decorators -D

配置package.json

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

注意: 以下两个配置顺序不可更改

[
        "@babel/plugin-proposal-decorators",
        {
          "legacy": true
        }
      ],
      "transform-class-properties"

项目中 mobx应该怎么用?

新建store目录

src下建立

src
     store
       home
         index.js
       car 
         index.js
       index.js

以这种结构建立文件和目录

在主入口文件中 使用 Provider

import store from './store'
import { Provider } from 'mobx-react'
ReactDOM.render(
  <Provider store = { store }>
    <App />
  </Provider>
, document.getElementById('root'));

打造mobx 数据包

import {
       observable, computed,action
     } from 'mobx'
     class Home {
       @observable  //监听 age
         age = 18
       @computed    //当age发生改变时, 自动触发
         get doubleAge(){
           return this.age *= 2
         }
       @action  // 用户操作  事件调用
         increment(){
           this.props.store.home.age ++ 
           console.log( this.props.store.home.age )
           //数据请求
           fetch('/data/data.json')
           .then(res => res.json())
           .then( result => console.log( result ))
           .catch( error => console.log( error ))
         }
     }
     const home = new Home()
     export default home

打造store

store/index.js

import home from './home'
  const store = {
    //实例
    home
  }
  export default store


组件内使用数据

this.props.store.xxx 可以拿到数据


注意:


this.porps里面没有找到 @action 装饰器定义的方法, 但是可以直接使用,

this会丢失 this.props.store.home.increment.bind(this)


在你要使用store的组件上记得做观察

import React,{ Component,Fragment } from 'react'
import { inject,observer } from 'mobx-react'
@inject('store')
@observer
class Count extends Component {
    constructor ( props ) {
        super( props )
        props.store.count.change = props.store.count.change.bind( this )//this丢失的解决
      }
      increment = () => {
        console.log( 'mine' )
        this.props.store.count.change()
      }
    render () {
        return (
            <Fragment>
                <button onClick = { this.increment }>点我+</button>
                <p>count:{ this.props.store.count.count} </p>
            </Fragment>
        )
    }
}
export default Count
相关文章
|
2月前
|
前端开发 JavaScript API
探究 React Hooks:如何利用全新 API 优化组件逻辑复用与状态管理
本文深入探讨React Hooks的使用方法,通过全新API优化组件逻辑复用和状态管理,提升开发效率和代码可维护性。
|
3月前
|
前端开发 JavaScript API
利用React Hooks简化状态管理
【10月更文挑战第1天】利用React Hooks简化状态管理
|
3月前
|
存储 前端开发 JavaScript
利用React Hooks简化状态管理
【10月更文挑战第1天】利用React Hooks简化状态管理
46 3
|
3月前
|
前端开发 JavaScript 网络架构
实现动态路由与状态管理的SPA——使用React Router与Redux
【10月更文挑战第1天】实现动态路由与状态管理的SPA——使用React Router与Redux
58 1
|
4月前
|
前端开发 JavaScript API
深入探索React Hooks与状态管理
深入探索React Hooks与状态管理
55 2
|
3月前
|
前端开发 JavaScript
深入理解前端状态管理:React、Redux 和 MobX
【10月更文挑战第7天】深入理解前端状态管理:React、Redux 和 MobX
92 0
|
5月前
|
开发者 安全 UED
JSF事件监听器:解锁动态界面的秘密武器,你真的知道如何驾驭它吗?
【8月更文挑战第31天】在构建动态用户界面时,事件监听器是实现组件间通信和响应用户操作的关键机制。JavaServer Faces (JSF) 提供了完整的事件模型,通过自定义事件监听器扩展组件行为。本文详细介绍如何在 JSF 应用中创建和使用事件监听器,提升应用的交互性和响应能力。
46 0
|
5月前
|
开发者
告别繁琐代码,JSF标签库带你走进高效开发的新时代!
【8月更文挑战第31天】JSF(JavaServer Faces)标准标签库为页面开发提供了大量组件标签,如`&lt;h:inputText&gt;`、`&lt;h:dataTable&gt;`等,简化代码、提升效率并确保稳定性。本文通过示例展示如何使用这些标签实现常见功能,如创建登录表单和展示数据列表,帮助开发者更高效地进行Web应用开发。
52 0
|
5月前
|
容器 Kubernetes Docker
云原生JSF:在Kubernetes的星辰大海中,让JSF应用乘风破浪!
【8月更文挑战第31天】在本指南中,您将学会如何在Kubernetes上部署JavaServer Faces (JSF)应用,享受容器化带来的灵活性与可扩展性。文章详细介绍了从构建Docker镜像到配置Kubernetes部署全流程,涵盖Dockerfile编写、Kubernetes资源配置及应用验证。通过这些步骤,您的JSF应用将充分利用Kubernetes的优势,实现自动化管理和高效运行,开启Java Web开发的新篇章。
60 0
|
5月前
|
前端开发 JavaScript API
掌握React表单管理的高级技巧:探索Hooks和Context API如何协同工作以简化状态管理与组件通信
【8月更文挑战第31天】在React中管理复杂的表单状态曾是一大挑战,传统上我们可能会依赖如Redux等状态管理库。然而,React Hooks和Context API的引入提供了一种更简洁高效的解决方案。本文将详细介绍如何利用Hooks和Context API来优化React应用中的表单状态管理,通过自定义Hook `useForm` 和 `FormContext` 实现状态的轻松共享与更新,使代码更清晰且易于维护,为开发者带来更高效的开发体验。
54 0