vue项目中通过vuex管理数据

news/2024/7/10 2:43:29 标签: vue.js, 前端, javascript, 前端框架, vue, css

目录

1.前言:

vuex%E7%9A%84%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95%EF%BC%9A-toc" style="margin-left:0px;">2.vuex的基础用法:

vue-toc" style="margin-left:40px;">1.构建与挂载vue

基础模板渲染

构建仓库

2.mutations的使用

1.介绍

​编辑

2.案列:

3.传参

4.辅助函数mapMutations:

3.module分对象的写法

介绍

建立模块:

访问数据的方式:

介绍

直接访问

模块导入访问

关于getters/setter


1.前言:

vuex相当于储存在页面后台的数据库。可以供全部组件访问到,相当于全局变量。便于多层级的

vuex%E7%9A%84%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95%EF%BC%9A">2.vuex的基础用法:

vue">1.构建与挂载vue

基础模板渲染

注意:文件存放的位置。

javascript"><template>
  <div class="box">
    <h2>Son1 子组件</h2>
    从vuex中获取的值: <label>1</label>
    <br>
    <!-- <button @click="handleAdd(1)">值 + 1</button>
    <button @click="handleAdd(5)">值 + 5</button>
    <button @click="handleAdd(10)">值 + 10</button>
    <button @click="handleChange">一秒后修改成666</button>
    <button @click="changeFn">改标题</button> -->
  </div>
</template>

<script>
export default {
  name: 'Son1Com'
}
</script>

<style lang="css" scoped>
.box{
  border: 3px solid #ccc;
  width: 400px;
  padding: 10px;
  margin: 20px;
}
h2 {
  margin-top: 10px;
}
</style>
javascript"><template>
  <div class="box">
    <h2>Son2 子组件</h2>
    从vuex中获取的值:<label>1</label>
    <br />
    <!-- <button @click="subCount(1)">值 - 1</button>
    <button @click="subCount(5)">值 - 5</button>
    <button @click="subCount(10)">值 - 10</button>
    <button @click="changeCountAction(888)">1秒后改成888</button>
    <button @click="changeTitle('前端程序员')">改标题</button> -->
  </div>
</template>

<script>
export default {
  name: 'Son2Com'
}
</script>

<style lang="css" scoped>
.box {
  border: 3px solid #ccc;
  width: 400px;
  padding: 10px;
  margin: 20px;
}
h2 {
  margin-top: 10px;
}
</style>

vue引入

在store.index.js编写如下代码

App.vue

javascript"><template>
  <div id="app">
    <h1>
      根组件
      <!-- - {{ title }}
      - {{ count }} -->
    </h1>
    <!-- <input :value="count" @input="handleInput" type="text"> -->
    <Son1></Son1>
    <hr>
    <Son2></Son2>
  </div>
</template>

<script>
import Son1 from './components/Son1.vue'
import Son2 from './components/Son2.vue'
// console.log(mapState(['count', 'title']))

export default {
  name: 'app',
  created () {
    console.log(this.$router) // 没配
    console.log(this.$store)
  },
  data: function () {
    return {

    }
  },
  components: {
    Son1,
    Son2
  }
}
</script>

<style>
#app {
  width: 600px;
  margin: 20px auto;
  border: 3px solid #ccc;
  border-radius: 3px;
  padding: 10px;
}
</style>

在控制台中检测是否挂载成功。因如图一所示。

构建仓库

直接导入

在state下定义数据。

函数导入

前言:

案列:

...manstate的作用就是将数组内的值全挂载到computed中

2.mutations的使用

1.介绍

store的数据也是下行数据,使用数据的组件不能直接对数据进行修改。要完成修改需要通过mutations进行修改。

2.案列:

结果:

3.传参

传参的时候,只能接受一个数据的输入,所以在输入多个数据的时候要把它们打包为一个对象。

数据的双向绑定

案列:

通过input改变,当方生变化时通知vuex变化。

4.辅助函数mapMutations:

actions与gettrs的用法

3.module分对象的写法

介绍

建立模块:

模块文件建立

javascript">// user模块
const state = {
  userInfo: {
    name: 'zs',
    age: 18
  },
  score: 80
}
const mutations = {
  setUser (state, newUserInfo) {
    state.userInfo = newUserInfo
  }
}
const actions = {
  setUserSecond (context, newUserInfo) {
    // 将异步在action中进行封装
    setTimeout(() => {
      // 调用mutation   context上下文,默认提交的就是自己模块的action和mutation
      context.commit('setUser', newUserInfo)
    }, 1000)
  }
}
const getters = {
  // 分模块后,state指代子模块的state
  UpperCaseName (state) {
    return state.userInfo.name.toUpperCase()
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}

index中配置

son1直接访问

访问数据的方式:
介绍

直接访问

案列:

右下角可以看到root中包括的数据,其中处于一级的是可以直接引入的。user,title。

将user已对象的形式引入

访问值

模块导入访问

23行导入user模块,再导入其内部的数据

添加标记namespace等于true

关于getters/setter

直接访问与state并不一样


http://www.niftyadmin.cn/n/5226100.html

相关文章

初识Java 18-4 泛型

目录 泛型存在的问题 在泛型中使用基本类型 实现参数化接口 类型转换和警告 无法实现的重载 基类会劫持接口 自限定类型 奇异递归类型 自限定 自限定提供的参数协变性 本笔记参考自&#xff1a; 《On Java 中文版》 泛型存在的问题 接下来讨论的&#xff0c;是在泛型…

甘草书店记:2023年10月15日 星期日 「等待也是人生的大事」

我常说&#xff0c;最好的人生是刚刚好。 财富不可少&#xff0c;也不必多&#xff0c;够用就好。爱情不要晚&#xff0c;也不要早&#xff0c;恰好就好。 可是人生活在社会中、自然中&#xff0c;不会万事由己。所以&#xff0c;等待是人生的必修课。 书店的装修设计和LOGO…

算法通关村——数组加法

数组加法 1、数组实现整数加法 LeetCode66. 由整数组成的非空数组所表示的非负整数&#xff0c;在其基础上加一。这里最高位数字存放在数组的首位&#xff0c;数组中每个元素只存储单个数字。并且假设除了整数0之外&#xff0c;这个整数不会以0开头。 示例&#xff1a; 输入&…

删除list中除最后一个之外所有的数据

1.你可以新建一个list List<Integer> listnew ArrayList<>();int i0;while (i<100){list.add(i);}List<Integer> subList list.subList(list.size()-1, list.size());System.out.println("原list大小--"list.size());System.out.println("…

消息队列好文收集

Kafka Kafka之ISR机制的理解-CSDN博客

SpringBoot项目发送邮件

&#x1f4d1;前言 本文主要是【SpringBoot】——SpringBoot项目发送邮件的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f3…

harmonyos应用开发者高级认证考试部分答案(2)

一、判断 只要使用端云一体化的云端资源就需要支付费用&#xff08;错&#xff09; 所有使用Component修饰的自定义组件都支持onPageShow&#xff0c;onBackPress和onPageHide生命周期函数。&#xff08;错&#xff09; HarmonyOS应用可以兼容OpenHarmony生态&#xff08;对&am…

思尧 - 开题报告

1. 研究背景和意义&#xff1a; 嵌入式系统在工业控制中的应用及重要性&#xff1a; 嵌入式系统是一种特殊的计算机系统&#xff0c;被嵌入在其他设备中用于控制和执行特定功能。在工业控制领域&#xff0c;嵌入式系统广泛应用于自动化设备、生产线控制和精密仪器中。其重要性在…