IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue--Vuex详解 -> 正文阅读

[JavaScript知识库]Vue--Vuex详解

1 最普通的方法:

(1)封装Vuex,一般会在src文件夹下新建一个名为store的文件夹,在此文件夹下新建一个index.js(新版本的创建项目的时候会自动生成)

(2)VueX代码:

import Vue from "vue";
import VueX from "vuex";
Vue.use(VueX);
//vuex如何使用:3 声明store对象
export default new VueX.Store({
  strict:process.env.NODE_EVN != "production",//严格模式,防止修改state,strict值为true在开发环境中使用
  //但是在生产环境要将值修改为false(原因:因为做检查会很慢)
  state:{//核心:数据(可以读数据,但是不要写数据,虽然不会出现报错,但是会导致数据难以追踪)
    youyou:"可爱",
    qiqi:"门喽",
    wenwen:"美美哒",
    a:12,
    b:10
  },
  mutations:{//修改操作的封装
    add(state,n){
      state.a += n;
    },
    addA(state,n){
        state.a += n;
    },
    addB(state,n){
        state.b += n;
    }
  },
  actions:{//用来调用的东西
    /*add({context},n){
      context.commit("add",n)
    }*/
    add({commit},n){
      commit("add",n)
    },
    addA({commit},n){
        commit("addA",n)
    },
    addB({commit},n){
        commit("addB",n)
    }
  },
  getters:{//用来专门读取数据,优点类似于computed
    count(state){
        return state.a+state.b;
    }
  },
  modules:{//可以允许将store对象拆分成好多命名空间来用

  }
})

3 Vuex使用:

(1)直接使用:

<template>
  <div>
      <input type="button" value="+5" @click="fn()"/>
  </div>
</template>

<script>
export default {
    name:"haha",
    data (){
        return {

        }
    },
    methods:{
        fn(){
            //this.$store.commit("add",5);//方法一
            this.$store.dispatch("add",1)
        }
    }
}
</script>

<style>

</style>

(2)使用映射方法:

<template>
  <div>
    <div>{{a}}</div>
    <div>{{b}}</div>
    <div>{{count}}</div>
    <input type="button" value="a操作" @click="addA(3)"/>
    <input type="button" value="b操作" @click="addB(1)"/>
    <HelloVuex/>
    <Table :fields="fields" :datas="datas" :aa="this"/>
  </div>
</template>

<script>
//import Table from "./common/table";
import Table from "@/components/common/table";
import HelloVuex from "@/components/hellovuex";
import {mapState,mapActions,mapGetters} from "vuex";
export default {
  name: 'Index',
  data () {
    return {
      datas:[
        {id:1,name:"其其",age:32},
        {id:2,name:"文文",age:18},
        {id:3,name:"柚柚",age:1},
      ],
      fields:[
        {name:"ID",text:"ID"},
        {name:"name",text:"姓名"},
        {name:"age",text:"年龄"},
      ]
    }
  },
  components:{
    Table,
    HelloVuex
  },
  methods:{
    del(id){
      this.datas = this.datas.filter(function (item){
        if(item.id != id){
          return item;
        }
      })
    },
    ...mapActions(["addA","addB"])
  },
  computed:{
    ...mapState(["a","b"]),
    ...mapGetters(["count"])
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:30:39  更:2021-08-12 16:33:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 16:34:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计