mobx在react hooks中的应用方式

 更新时间:2023年10月13日 09:17:38   作者:Ctrl30xsx  
这篇文章主要介绍了mobx在react hooks中的应用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mobx在react hooks的应用

hooks 实现inject功能

// utils/useStores.js
import React from 'react'
import { MobXProviderContext} from 'mobx-react';
import RootStore from '~/stores/index'
const useStores = (name) => React.useContext(MobXProviderContext)[name]
export default useStores

局部的store

// store.js
import { observable, action } from 'mobx';
class Store {
  @observable userInfo = { name: 'xsx' };
  @observable count = 11;
  @action
  handleClick() {
    this.count +=1;
  }
}
export default Store;

页面中使用

import React, { ReactElement } from 'react';
import Store from './store.ts';
import useStores from '~/utils/useStores';
import { useObserver, useObservable } from 'mobx-react-lite';
interface Props {
  [props: string]: any;
}
export default function index(props: any): ReactElement {
//  手动传入字符串,选择要使用的内容 该处为全局store的引用,与之前的class下的@inject('userStore')同理
  const globalStore = useStores('userStore'); 
  // 添加观察者模式 该处为局部的store 与之前class下的  let myStore = new Store(); 同理
  let myStore = useObservable(new Store()); 
  return useObserver(() => (
    <div>
      {myStore.count}
      ====================
      {store.count}
      <button
        onClick={() => {
          myStore.handleClick();
          globalStore .handleClick();
        }}
      >
        add
      </button>
    </div>
  ));
}

mobx与react hooks配合使用

import React from 'react';
import {useObserver, Observer, observer} from 'mobx-react';
import {appStore} from './appStore';
// 方法1:
function Methods1() {
    return useObserver(() => (
        <div onClick={() => {appStore.count = 1}}>{appStore.count}</div>
    ))
}
// 方法2(Observer一定要用函数):
function Methods2 () {
    return (
        <Observer>
            {() => <div onClick={() => {appStore.count = 1}}>{appStore.count}</div>}   
        </Observer>
    )
}
// 方法3(推荐):
export default observer(props => {
    return <div onClick={() => {appStore.count = 1}}>{appStore.count}</div>
})
 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • React+Ant Design前端实现读取与导出Excel文件

    React+Ant Design前端实现读取与导出Excel文件

    在实际业务场景中,我们经常需要处理 Excel 文件的导入导出,本文将以 React + Ant Design 项目为例,演示如何通过 xlsx 库实现以下功能,希望对大家有所帮助
    2025-08-08
  • 在React中使用SVG的几种方式

    在React中使用SVG的几种方式

    在React中,SVG(Scalable Vector Graphics)的使用非常普遍,因为它们提供了可伸缩的矢量图形,这对于现代Web应用来说是非常重要的,以下是几种常见的在React中使用SVG的方法,每种方法都有其特定的用例和最佳实践,需要的朋友可以参考下
    2024-11-11
  • react之组件通信详解

    react之组件通信详解

    本篇文章主要介绍了React组件通信详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-10-10
  • Taro React自定义TabBar使用useContext解决底部选中异常

    Taro React自定义TabBar使用useContext解决底部选中异常

    这篇文章主要为大家介绍了Taro React底部自定义TabBar使用React useContext解决底部选中异常(需要点两次才能选中的问题)示例详解,有需要的朋友可以借鉴参考下
    2023-08-08
  • React echarts 组件的封装使用案例

    React echarts 组件的封装使用案例

    这篇文章主要介绍了React echarts 组件的封装,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • React state结构设计原则示例详解

    React state结构设计原则示例详解

    这篇文章主要为大家介绍了React state结构设计原则示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • React状态管理的项目实践

    React状态管理的项目实践

    本文主要介绍了状态管理的概念,包括本地状态和全局状态的管理方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01
  • React中的refs的使用教程

    React中的refs的使用教程

    本篇文章主要介绍了React中的refs的使用教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • react页面中存在多个input时巧妙设置value属性方式

    react页面中存在多个input时巧妙设置value属性方式

    这篇文章主要介绍了react页面中存在多个input时巧妙设置value属性方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 字节封装React组件手机号自动校验格式FormItem

    字节封装React组件手机号自动校验格式FormItem

    这篇文章主要为大家介绍了字节封装React组件手机号自动校验格式FormItem,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论