MobX入门指南:快速上手状态管理库

一、什么是MobX

MobX 是一个状态管理库,它可以让你轻松地管理应用程序的状态,并且可以扩展和维护。它使用观察者模式来自动传播你的状态的变化到你的 React 组件。

二、安装及配置

  1. 安装 MobX 和 MobX-React:你可以使用 npm 或 yarn 安装这些库:
bash 复制代码
npm install mobx mobx-react-lite
# 或者
yarn add mobx mobx-react-lite
  1. 定义一个 Store :Store 是一个保存应用程序状态的对象。你可以使用 MobX 的 observable 装饰器来使 Store 的属性可观察。这里是一个例子:
javascript 复制代码
import { observable, action } from 'mobx';
import axios from 'axios';

class Store {
  @observable data = null;
  @observable loading = false;

  @action
  async fetchData() {
    this.loading = true;
    try {
      const response = await axios.get('https://api.example.com/data');
      this.data = response.data;
    } catch (error) {
      console.error(error);
    } finally {
      this.loading = false;
    }
  }
}

const store = new Store();
export default store;

在这个例子中,fetchData 是一个异步的 action,它从 API 获取数据并将其存储在 data 可观察对象中。loading 可观察对象用于跟踪请求是否正在进行中。

三、在组件中使用

3.1 在class组件中使用

js 复制代码
import React, { Component } from 'react';
import { observer } from 'mobx-react';
import store from './store';

@observer
class MyComponent extends Component {
  render() {
    return (
      <div>
        {store.loading ? <p>加载中...</p> : <p>{store.data}</p>}
        <button onClick={() => store.fetchData()}>获取数据</button>
      </div>
    );
  }
}

export default MyComponent;

在这个例子中,@observer 装饰器被用来使组件在 loading 或 data 改变时重新渲染。当按钮被点击时,fetchData action 被调用。

3.1 在函数式组件中使用

javascript 复制代码
import React from 'react';
import { useObserver } from 'mobx-react-lite';
import store from './store';

const MyComponent = () => {
  return useObserver(() => (
    <div>
      {store.loading ? <p>加载中...</p> : <p>{store.data}</p>}
      <button onClick={() => store.fetchData()}>获取数据</button>
    </div>
  ));
};

export default MyComponent;

在这个例子中,useObserver 钩子被用来使组件在 loadingdata 改变时重新渲染。当按钮被点击时,fetchData action 被调用。

更多细节参考中文文档:https://cn.mobx.js.org/

相关推荐
爱吃奶酪的松鼠丶6 分钟前
React长列表,性能优化。关于循环遍历的时候,key是用对象数据中的ID还是用索引
javascript·react.js·性能优化
哈__4 小时前
从入门小白到精通,玩转 React Native 鸿蒙跨平台开发:TouchableOpacity 触摸反馈组件
react native·react.js·harmonyos
古茗前端团队4 小时前
视频播放弱网提示实现
react.js
哈__5 小时前
入门小白到精通,玩转 React Native 鸿蒙跨平台开发:Button 按钮组件与点击事件
react native·react.js·harmonyos
哈__5 小时前
React Native 鸿蒙开发:内置 Share 模块实现无配置社交分享
javascript·react native·react.js
怕浪猫6 小时前
React从入门到出门 第五章 React Router 配置与原理初探
前端·javascript·react.js
哈__6 小时前
React Native 鸿蒙跨平台开发:LayoutAnimation 实现鸿蒙端表单元素的动态添加动画
react native·react.js·harmonyos
哈__6 小时前
React Native 鸿蒙跨平台开发:Vibration 实现鸿蒙端设备的震动反馈
javascript·react native·react.js
哈__6 小时前
React Native 鸿蒙跨平台开发:LayoutAnimation 实现鸿蒙端页面切换的淡入淡出过渡动画
javascript·react native·react.js
哈__6 小时前
React Native 鸿蒙跨平台开发:Animated 实现鸿蒙端组件的上下滑动入场动画
react native·react.js·harmonyos