Vuex 4 指南,使用 Vue3 的需要看看!,2024年最新花了19998买的学习教程

本文介绍了如何使用Vue框架和Vuex库在一个简单的待办应用程序中实现状态管理和数据共享。主要内容包括创建Vuexstore、定义状态、mutation、getter以及如何在组件间操作和展示数据。
摘要由CSDN通过智能技术生成

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

// src/main.js

import { createApp } from “vue”;

import App from “@/App”;

import store from “@/store”;

const app = createApp(App);

app.use(store);

app.mount(“#app”);

创建一个简单的应用程序

如上所述,Vuex 的重点是通常在大型应用程序中创建可扩展的全局状态。 但是,我们可以在一个简单的待办应用程序中演示其功能。

完成后效果如下所示:

3108827612-608dfb82a0450_fix732.png

现在,删除 HelloWorld 文件:

rm src/components/HelloWorld.vue

TodoNew.vue

现在,添加一个新组件 TodoNew,它负责创建新的待办事项。

touch src/components/TodoNew.vue

打开 TodoNew.vue 并输入以下内容:

// src/components/TodoNew.vue

<input

type=“text”

placeholder=“Enter a new task”

v-model=“task”

/>

现在转到组件定义,有两个局部状态属性-task和给新待办事项提供唯一标识符的id

// src/components/TodoNew.vue

定义 store 状态

过会,我们会创建一个显示待办事项的组件。 由于它和TodoNew组件都需要访问相同的数据,因此这是我们在 Vuex 存储中保存的全局state 的理想选择。

现在,回到state并定义属性状态。 这里使用 Vux4 提供的 createStore 函数,该函数返回一个对象。 该对象具有一个属性 todos,它是一个空数组。

// src/store/index.js

import { createStore } from “vuex”;

export default createStore({

state () {

return {

todos: []

}

}

});

定义 mutation

从原则2可以知道,Vuex state 不能直接更改,需要定义mutator函数。

现在,我们向store添加一个mutation属性,并添加一个函数属性addTodo。 所有mutator方法第一个参数。 第二个可选参数是 store,第二个是传递的数据。

// src/store/index.js

import { createStore } from “vuex”;

export default createStore({

state () {

return {

todos: []

}

},

mutations: {

addTodo (state, item) {

state.todos.unshift(item);

}

}

});

使用 commit 调用 mutation

现在,可以在TodoNew组件中使用它,在 TodoNew组件定义一个addTodo方法。

要访问store ,我们可以使用全局属性this.$store。 使用commit方法创建一个新的mutation。 需要传递了两个参数-首先是mutation的名称,其次是我们要传递的对象,是一个新的待办事项(由idtask值组成)。

// src/components/TodoNew.vue

methods: {

addTodo: function() {

const { id, task } = this;

this.$store.commit(“addTodo”, { id, task });

this.id++;

this.task = “”;

}

}

回顾

到目前为止:

  1. 用户将待办事项通过输入框输入,并绑定到 task 变量。

  2. 提交表单后,将调用addTodo方法

  3. 创建一个待办事项对象并将其“提交”到store中。

// src/components/TodoNew.vue

<input

type=“text”

placeholder=“Enter a new task”

v-model=“task”

/>

读取 store 数据

现在,我们已经创建了用于添加待办事项的功能。 接下来,就是把它们显示出来。

创建一个新组件TodoList.vue 文件。

touch src/components/TodoList.vue

内容如下:

// src/components/TodoList.vue

    v-for=“todo in todos”

    :key=“todo.id”

    {{ todo.description }}

    todos是一个计算属性,我们在其中返回Vuex store 的内容。

    // src/components/TodoList.vue

    定义 getters

    与直接访问store 内容不同,getter是类似于存储的计算属性的函数。在将数据返回到应用程序之前,这些工具非常适合过滤或转换数据。

    例如,下面有getTodos,它返回未过滤的状态。 在许多情况下,可以使用filtermap来转换此内容。

    todoCount返回todo数组的长度。

    通过确保组件愿意保留数据的本地副本,getter有助于实现原则1,即单一数据来源。

    // src/store/index.js

    export default createStore({

    getters: {

    getTodos (state) {

    return state.todos;

    },

    todoCount (state) {

    return state.todos.length;

    }

    }

    })

    返回TodoList组件,我们通过返回this.$store.getters.getTodos来完成功能。

    // src/components/TodoList.vue

    App.vue

    要完成此应用程序,现在要做的就是导入并在App.vue中声明我们的组件。

    // src/App.vue

    To-Do List

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值