mobx在react hooks中的應(yīng)用方式
mobx在react hooks的應(yīng)用
hooks 實(shí)現(xiàn)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;頁(yè)面中使用
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 {
// 手動(dòng)傳入字符串,選擇要使用的內(nèi)容 該處為全局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一定要用函數(shù)):
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>
})
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React+Ant Design前端實(shí)現(xiàn)讀取與導(dǎo)出Excel文件
在實(shí)際業(yè)務(wù)場(chǎng)景中,我們經(jīng)常需要處理 Excel 文件的導(dǎo)入導(dǎo)出,本文將以 React + Ant Design 項(xiàng)目為例,演示如何通過(guò) xlsx 庫(kù)實(shí)現(xiàn)以下功能,希望對(duì)大家有所幫助2025-08-08
Taro?React自定義TabBar使用useContext解決底部選中異常
這篇文章主要為大家介紹了Taro?React底部自定義TabBar使用React?useContext解決底部選中異常(需要點(diǎn)兩次才能選中的問(wèn)題)示例詳解,有需要的朋友可以借鑒參考下2023-08-08
React?state結(jié)構(gòu)設(shè)計(jì)原則示例詳解
這篇文章主要為大家介紹了React?state結(jié)構(gòu)設(shè)計(jì)原則示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
React狀態(tài)管理的項(xiàng)目實(shí)踐
本文主要介紹了狀態(tài)管理的概念,包括本地狀態(tài)和全局狀態(tài)的管理方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-01-01
react頁(yè)面中存在多個(gè)input時(shí)巧妙設(shè)置value屬性方式
這篇文章主要介紹了react頁(yè)面中存在多個(gè)input時(shí)巧妙設(shè)置value屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem
這篇文章主要為大家介紹了字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

