日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Vuex原理:通過Vuex實現TodoList

來源: 責編: 時間:2024-09-10 09:50:02 171觀看
導讀什么是Vuex「Vuex」 是一個專為 Vue.js 應用程序開發的狀態管理模式。它可以集中管理應用中的組件共享狀態,并提供一些工具來保持狀態的一致性。Vuex 主要用于解決以下問題:「組件通信」:在大型的 Vue.js 應用中,多個組件

什么是Vuex

「Vuex」 是一個專為 Vue.js 應用程序開發的狀態管理模式。它可以集中管理應用中的組件共享狀態,并提供一些工具來保持狀態的一致性。Vuex 主要用于解決以下問題:uA428資訊網——每日最新資訊28at.com

  • 「組件通信」:在大型的 Vue.js 應用中,多個組件可能需要共享一些狀態(數據)。而通過簡單的組件通信方式(props、自定義事件)在復雜的組件關系中可能會變得不夠靈活或繁瑣。
  • 「狀態管理」:Vue.js 的單向數據流通過 props 將數據從父組件傳遞給子組件,但對于多層嵌套的組件結構,數據流管理可能變得復雜。Vuex 提供了一種集中式管理狀態的方式,使得狀態的變更變得可預測且易于調試。

以下是 Vuex 的核心概念:uA428資訊網——每日最新資訊28at.com

1. 「State(狀態)」

Vuex 使用一個包含應用層級狀態的對象,即 State。這個狀態是響應式的,當狀態發生變化時,相關組件將自動更新。uA428資訊網——每日最新資訊28at.com

const store = new Vuex.Store({  state: {    count: 0  }});

2. 「Mutations(變更)」

狀態的變更必須通過 Mutations 來進行。Mutations 是同步函數,用于修改狀態。通過這種方式,可以追蹤狀態的變更,并且可以實現一些限制條件,確保狀態的可控性。uA428資訊網——每日最新資訊28at.com

const store = new Vuex.Store({  state: {    count: 0  },  mutations: {    increment(state) {      state.count++;    }  }});

3. 「Actions(動作)」

Actions 是用于提交 Mutations 的函數,可以包含異步操作。通過 Actions,可以更靈活地處理業務邏輯,例如異步請求或條件判斷。uA428資訊網——每日最新資訊28at.com

const store = new Vuex.Store({  state: {    count: 0  },  mutations: {    increment(state) {      state.count++;    }  },  actions: {    incrementAsync({ commit }) {      setTimeout(() => {        commit('increment');      }, 1000);    }  }});

4. 「Getters(獲取器)」

Getters 允許組件在訪問狀態時進行計算,類似于 Vue 組件中的計算屬性。Getters 的結果會被緩存,只有依賴的狀態發生變化時才會重新計算。uA428資訊網——每日最新資訊28at.com

const store = new Vuex.Store({  state: {    count: 0  },  getters: {    doubleCount: state => state.count * 2  }});

5. 「Modules(模塊)」

Vuex 允許將 Store 分割成模塊,每個模塊擁有自己的 state、mutations、actions、getters。這樣可以更好地組織大型的 Store。uA428資訊網——每日最新資訊28at.com

const moduleA = {  state: { /* ... */ },  mutations: { /* ... */ },  actions: { /* ... */ },  getters: { /* ... */ }};const store = new Vuex.Store({  modules: {    a: moduleA  }});

6. 單一狀態樹

Vuex 使用一個單一的狀態樹來管理應用中的所有狀態。這使得整個應用的狀態變化可追蹤和調試。uA428資訊網——每日最新資訊28at.com

7. Plugin(插件)

Vuex 允許通過插件擴展其功能。插件是一個函數,可以在每次 mutation 發生時執行一些自定義的邏輯,例如記錄日志或持久化存儲。uA428資訊網——每日最新資訊28at.com

// Vuex 插件示例const myPlugin = store => {  // 每次 mutation 時調用  store.subscribe((mutation, state) => {    console.log('mutation type:', mutation.type);  });};

8. 嚴格模式

Vuex 提供了嚴格模式,用于檢測 State 的變更是否是通過 Mutations 進行的。在開發環境中啟用嚴格模式可以幫助捕獲不合規的狀態變更。uA428資訊網——每日最新資訊28at.com

const store = new Vuex.Store({  // ...  strict: process.env.NODE_ENV !== 'production'});

通過這些概念,Vuex 提供了一種集中式狀態管理的解決方案,使得狀態在應用中的傳遞和管理更為清晰和可維護。Vuex 不是必需的,尤其對于小型應用可能會顯得繁瑣,但在大型、復雜的應用中,它提供了一種有組織的方法來管理狀態。uA428資訊網——每日最新資訊28at.com

利用Vuex實現一個tudoList

簡單了解一下Vuex之后呢,實現一個小案例。下面是一個使用 Vue 3 和 Vuex 的簡單的 Todo List 示例。使用前需要先下載依賴。這個應該都會吧。創建一個 store 文件夾,并在其中創建 index.js 文件來定義 Vuex 的 store:uA428資訊網——每日最新資訊28at.com

// store/index.jsimport { createStore } from 'vuex';export default createStore({  state: {    todos: []  },  mutations: {    addTodo(state, todo) {      state.todos.push(todo);    },    toggleTodo(state, index) {      state.todos[index].completed = !state.todos[index].completed;    },    removeTodo(state, index) {      state.todos.splice(index, 1);    }  },  actions: {    addTodoAsync({ commit }, todo) {      setTimeout(() => {        commit('addTodo', todo);      }, 1000);    }  },  getters: {    completedTodos: state => state.todos.filter(todo => todo.completed),    remainingTodos: state => state.todos.filter(todo => !todo.completed)  }});

然后在 App.vue 文件中使用這個 store:uA428資訊網——每日最新資訊28at.com

// App.vue<template>  <div id="app">    <h1>Todo List</h1>    <form @submit.prevent="addTodo">      <input v-model="newTodo" placeholder="Add a new todo" />      <button type="submit">Add</button>    </form>    <div>      <h2>Todo Items</h2>      <ul>        <li v-for="(todo, index) in todos" :key="index">          <input type="checkbox" v-model="todo.completed" />          {{ todo.text }}          <button @click="removeTodo(index)">Remove</button>        </li>      </ul>    </div>    <div>      <h2>Completed Todos</h2>      <ul>        <li v-for="(todo, index) in completedTodos" :key="index">          {{ todo.text }}        </li>      </ul>    </div>    <div>      <h2>Remaining Todos</h2>      <ul>        <li v-for="(todo, index) in remainingTodos" :key="index">          {{ todo.text }}        </li>      </ul>    </div>  </div></template><script>import { computed } from 'vue';import { useStore } from 'vuex';export default {  name: 'App',  data() {    return {      newTodo: ''    };  },  methods: {    addTodo() {      this.$store.commit('addTodo', { text: this.newTodo, completed: false });      this.newTodo = '';    },    removeTodo(index) {      this.$store.commit('removeTodo', index);    }  },  computed: {    todos() {      return this.$store.state.todos;    },    completedTodos: computed(() => useStore().getters.completedTodos),    remainingTodos: computed(() => useStore().getters.remainingTodos)  }};</script><style>#app {  font-family: Avenir, Helvetica, Arial, sans-serif;  text-align: center;  color: #2c3e50;  margin-top: 60px;}form {  margin-bottom: 20px;}ul {  list-style-type: none;  padding: 0;}li {  margin-bottom: 5px;}</style>

這個示例中,我們使用 Vuex 來管理 todo 列表的狀態,包括添加新 todo、切換 todo 狀態、刪除 todo 等功能。在模板中,我們使用了 v-for 指令來渲染 todo 列表,并通過 Vuex 的 getters 計算屬性顯示已完成和未完成的 todo 列表。uA428資訊網——每日最新資訊28at.com

小結

使用vuex能夠實現組件之間的通信,它是一個狀態管理機制,集中管理組件共享狀態。uA428資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-112757-0.htmlVuex原理:通過Vuex實現TodoList

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Uniapp 開發神器,效率翻倍!

下一篇: 高性能、無侵入的 Java 性能監控神器

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产综合一区二区| 国产手机视频一区二区| 亚洲精品免费在线| 国内精品模特av私拍在线观看| 国产一区导航| 在线观看日韩精品| 日韩午夜一区| 羞羞答答国产精品www一本| 欧美在线视频a| 欧美高清不卡在线| 国产精品成人观看视频国产奇米| 国产精品主播| 亚洲国产精品成人精品 | 亚洲人成网在线播放| 一区二区三区四区精品| 欧美在线观看www| 欧美大片免费观看| 国产精品视频免费观看www| 国产中文一区| 一本色道久久综合亚洲精品不 | 午夜久久一区| 欧美福利精品| 国产婷婷成人久久av免费高清| 在线免费观看日韩欧美| 亚洲图片欧洲图片日韩av| 久久免费视频网站| 国产精品成人在线观看| 亚洲第一在线视频| 亚洲永久免费av| 欧美成人精品在线观看| 国产伦精品一区二区三区免费迷 | 欧美一区二区| 欧美日韩精品一二三区| 黄色小说综合网站| 亚洲性色视频| 欧美成人自拍视频| 国产曰批免费观看久久久| 日韩一级精品视频在线观看| 久久国产主播精品| 欧美日韩一区二区在线视频| 黄色资源网久久资源365| 中文精品一区二区三区| 欧美成人激情视频免费观看| 国产欧美日韩亚州综合| 一本久久a久久免费精品不卡| 久久久夜夜夜| 国产深夜精品| 亚洲私人黄色宅男| 欧美精品亚洲| 亚洲丰满在线| 久久久久免费视频| 国产精品中文在线| 亚洲一区二区三区在线视频| 国产欧美日本一区二区三区| 一本到高清视频免费精品| 美女主播精品视频一二三四| 国产精品专区h在线观看| 亚洲精品永久免费| 欧美成人一区二区在线| 国产一区二区三区四区三区四| 亚洲一区二区在| 欧美日韩色一区| 亚洲久久一区| 欧美国产日韩视频| 亚洲高清免费| 久久综合亚洲社区| 黄色成人精品网站| 久久久久久久久一区二区| 国产亚洲美州欧州综合国| 亚洲欧美日韩另类精品一区二区三区| 欧美日韩人人澡狠狠躁视频| 一区二区免费在线观看| 欧美日韩天堂| av成人福利| 欧美日韩日本国产亚洲在线| 亚洲乱码国产乱码精品精| 欧美大片免费| 亚洲精品国产拍免费91在线| 美腿丝袜亚洲色图| 亚洲福利一区| 欧美a级一区| 亚洲精品国产品国语在线app| 女人色偷偷aa久久天堂| 亚洲国产福利在线| 老司机67194精品线观看| 亚洲电影网站| 欧美精品麻豆| 一区二区三区产品免费精品久久75 | 亚洲欧美在线免费观看| 国产精品乱子乱xxxx| 午夜精品福利在线| 国产三级欧美三级日产三级99| 欧美一级免费视频| 国产视频在线一区二区| 久久免费99精品久久久久久| 亚洲电影免费观看高清完整版在线观看| 米奇777在线欧美播放| 最新成人在线| 欧美日韩欧美一区二区| 亚洲欧美日韩在线高清直播| 国产日韩1区| 久久久之久亚州精品露出| 亚洲国产高清自拍| 欧美日韩欧美一区二区| 先锋资源久久| 欲色影视综合吧| 欧美韩国一区| 亚洲视频你懂的| 国产欧美精品在线播放| 久久久一区二区三区| 91久久精品国产| 国产精品sm| 久久精品国产综合| 亚洲国产精品久久久久秋霞不卡 | 亚洲国产毛片完整版| 欧美日韩不卡合集视频| 亚洲免费一级电影| 狠狠狠色丁香婷婷综合久久五月| 你懂的成人av| 亚洲一区二区3| 国内精品久久久久影院 日本资源| 久久亚洲精品欧美| 亚洲精选大片| 国产欧美一区二区色老头| 久久综合色天天久久综合图片| 99视频一区| 国内精品免费在线观看| 欧美老女人xx| 久久精品国产成人| 亚洲美女免费精品视频在线观看| 国产精品一区二区久久| 免费成人黄色av| 亚洲女同同性videoxma| 在线看欧美视频| 国产精品久久久久9999吃药| 久久亚洲综合网| 亚洲视频综合| 一区二区在线免费观看| 国产精品成人v| 葵司免费一区二区三区四区五区| 亚洲视频中文| 亚洲激情电影在线| 国产欧美在线观看| 欧美日韩国产首页在线观看| 久久国产福利| 亚洲网址在线| 最近中文字幕mv在线一区二区三区四区| 国产精品视频99| 欧美精品亚洲精品| 久久精品在线| 亚洲制服少妇| 亚洲精品三级| 狠狠色狠狠色综合日日tαg | 韩日欧美一区| 国产精品毛片va一区二区三区 | 久久亚洲一区二区| 亚洲欧美视频在线观看| 亚洲美女视频| 在线观看日韩专区| 国产欧亚日韩视频| 欧美日韩一区二区在线观看视频| 久久午夜电影| 欧美一区二区啪啪| 亚洲午夜高清视频| 亚洲伦理久久| 亚洲福利在线观看| 国产一区二区三区直播精品电影| 国产精品igao视频网网址不卡日韩| 毛片基地黄久久久久久天堂| 欧美一区影院| 亚洲一区中文| 一本色道久久88亚洲综合88| 亚洲国产一区二区三区青草影视| 国产亚洲欧美日韩精品| 国产精品视频网址| 欧美视频专区一二在线观看| 欧美精品成人| 欧美大片一区二区| 久久最新视频| 久久久久久9999| 久久av二区| 欧美亚洲一区| 午夜久久久久久| 亚洲在线一区二区| 亚洲视频久久| 在线亚洲观看| 一区二区三区www| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久午夜视频| 久久久久91| 久久精品久久综合| 欧美一区二区在线播放| 亚洲欧美在线一区| 亚洲欧美国产视频| 亚洲在线第一页| 亚洲一区制服诱惑| 亚洲欧美久久| 亚洲欧美在线磁力| 午夜精品久久久久久久99热浪潮| 亚洲综合首页| 午夜精品一区二区三区在线播放| 亚洲免费在线| 午夜精品一区二区在线观看| 午夜一区不卡|