模仿vuex写了一个简单的状态管理的插件,这样写对吗?
题目描述
感觉vuex有点臃肿,想自己写一个轻量级的,尝试了一下,可以运行起来,也达到了预期效果,只是感觉有点别扭,不知道这么写对不对。
题目来源及自己的思路
发挥composition API的优势,避免字符串,简化操作。
另外想学习一下怎么做vue的插件。
相关代码
// 模仿Vuex写一个简单的数据、状态、缓存管理
import { install } from "element-plus"
import { reactive, inject } from 'vue'
// VuexDataState
export default {
store: {
state: {},
action: {}
}, // 状态容器
// 创建实例
createVueDataState(info) {
const _info = {
global: {
blogState: {
aaa: '状态演示'
}
},
action: {
setBlogState(state, value) {
state.blogState.aaa = value
}
}
}
this.store.state.blogState = reactive(_info.global.blogState)
this.store.action.setBlogState = _info.action.setBlogState
return this
},
// 代码里面调用
useStore() {
const state = inject('nf-store').state
const fun = {}
fun.setBlogState = (aa) => {
return this.store.action.setBlogState(state, aa)
}
fun.setBlogState2 = (aa) => {
return this.store.action.setBlogState(state, aa)
}
console.log('useStore内部的fun:', fun)
return {
...fun
}
},
// 安装插件
install (app, options) {
// Plugin code goes here
console.log('vueds-app', app)
console.log('vueds-options', options)
console.log('我的状态', this.store)
// 注入状态
app.provide('nf-store', this.store)
// 模板使用状态
app.config.globalProperties.$nfstate = this.store.state
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
基本就是这样,但是总是感觉怪怪的。
所以想问问各位高手,这么写对不对?
当然功能很简陋,现在只是测试一下想法是否可以实现。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论