BOYYANG/1/blog/龙女4K壁纸_彼岸图网

react中如何使用mobx(pinia风格)

作者: boyyang
分类: 前端开发
发布: 2024-05-29 10:09:37
更新: 2025-03-23 12:06:29
浏览: 266

       react的状态管理库(mobx)官方文档写得是真的烂,一点也不直观,相比pinia感觉差得不是一星半点。这儿提供一种类似于pinia的使用体验方法。

       我看到网上很多使用都是将store做得统一管理,类似于vuex的写法,但是我还是喜欢pinia那种分开的使用方式。优雅

       


store文件编写

  • store/user/index.ts
import {makeAutoObservable} from 'mobx'
import React from 'react'

class UserStore {

    username = ''

    constructor() {
        makeAutoObservable(this)
    }

    setName(name: string) {
        this.username = name
    }
}

const userStoresContext = React.createContext({
    userStore: new UserStore(),
})

const useUserStore = () => React.useContext(userStoresContext)


export {
    useUserStore,
}

组件中使用

  • views/home/index.tsx
import {observer} from 'mobx-react-lite'
import {useUserStore} from '@/store/user'

const Home = observer(() => {
    const {userStore} = useUserStore()

    const changeName = () => {
        userStore.setName('boyyang')
    }
    return (
        <>
            <div>{userStore.username}</div>
            <span onClick={() => changeName()}>changeName</span>
        </>
    )
})

export default Home



总结:

       目前没有发现问题,多个组件使用数据状态也改变了,还是觉得pinia更加简单易懂,官方文档也写得非常好,mobx那文档真的没发看。

#vue3
#前端
#react
#pinia
#mobx