当前位置: 代码迷 >> 综合 >> 只需三分钟!只需创建一个vuex.js文件,让你马上学会使用Vuex,尽管Vuex是个鸡肋!(扔掉store文件夹和里面的index、getters、actions、mutations等js文件吧!)
  详细解决方案

只需三分钟!只需创建一个vuex.js文件,让你马上学会使用Vuex,尽管Vuex是个鸡肋!(扔掉store文件夹和里面的index、getters、actions、mutations等js文件吧!)

热度:44   发布时间:2023-11-27 17:52:16.0

前情提示:有一天,我要实现一个效果→点击某个按钮改变一个全局变量,并且要让绑定了该变量的所有位置异步渲染。我试过用一个全局的js文件存放该变量,该变量值虽然改变了,但是没有做到异步渲染。接着我用window.全局变量的方式,尼玛!还没打开页面给我报错"全局变量 of undefined",我才想起页面还没加载完的时候window全局对象都是空值!这让我如何是好?于是我琢磨了下有个叫做Vuex玩意儿,故摆弄一下,也分享给大家!

我看了官方文档,也看了很多论坛大牛的博客,发现大家都在src下面创建一个sotre文件夹,然后创建4个文件:index.js、getters.js、actions.js、mutations.js。我去~搞这么麻烦???我差点就放弃了~


仔细琢磨了一番,发现就一个文件即可实现的事情非得搞那么麻烦,大家都很忙,何不让自己更加轻量化一点?终于明大部分程序猿发际线靠后、女朋友找不到的理由(坏笑)了,净花在这种冗余的开发上面了!不废话一个文件搞定,建议无脑复制直接淦!!!


在src/js文件夹下面创建vuex.js文件(注意文件名小写,避免和Vuex冲突)

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({//【全局变量】state: {//_qiangGe是全局变量名(我习惯_开头代表全局变量)_qiangGe: false,},//【获取值】getters: {_qiangGe: state => state._qiangGe,},//【中间件】mutations: {_qiangGe: (state, value) => (state._qiangGe = value),},//【修改值】actions: {//__qiangGe是全局方法(我习惯__开头代表全局方法)__qiangGe: ({ commit }, value) => commit('_qiangGe', value),},
});

在src/js/main.js中引入vuex.js(注意我的main.js和vuex.js是在同一个目录下的,所以参考自己项目的相对路径来引入,别和我一样)

//……这里省略若干代码片段import Vue from 'vue';
import vuex from './vuex';//……这里省略若干代码片段import App from '../vue/App';//这个是我的App.vue文件路径(仅供参考)
new Vue({ el: '#app', render: h => h(App), router, store:vuex });//这里store:vuex是关键(没它啥都别想干!)

然后去一个想要出发修改全局变量_qiangGe的vue页面加入如下代码

<template><button @click="__qiangGe(!_qiangGe)">{
   { _qiangGe ? "强" : "弱" }}</button>
</template><script>
import { mapGetters, mapActions } from "vuex";
export default {computed: {...mapGetters(["_qiangGe"]), // 【获取值】等同于this.$store.getters._qiangGe},methods: {...mapActions(["__qiangGe"]), // 【修改值】等同于this.$store.dispatch('__qiangGe','要修改的值'))},
};
</script>

cnpm run dev跑起来~~~

你会看到一个按钮上面有个“弱”,来回点击它,将会在“强/弱”之间来回切换。

刚刚好3分钟过去了,你学会了吗?

  相关解决方案