nuxt中使用Vuex

来源:https://www.cnblogs.com/xfk1999/archive/2020/05/28/nuxt-use-vuex.html
-Advertisement-
Play Games

引言 在nuxt中使用Vuex,以模塊方式引用——計數器為例 計數器示例 目錄結構 目錄結構 js模塊寫法 // user.js // state為一個函數, 註意箭頭函數寫法 const state = () => ({ counter: 6 }) // mutations為一個對象 const ...


引言

在nuxt中使用Vuex,以模塊方式引用——計數器為例

計數器

計數器示例

目錄結構

目錄結構

目錄結構

js模塊寫法

// user.js
// state為一個函數, 註意箭頭函數寫法
const state = () => ({
  counter: 6
})

// mutations為一個對象
const mutations = {
  increment(state) {
    state.counter++
  },
  decrement(state) {
    state.counter--
  }
}
const actions = {

}
const getters = {

}
export default {
  namespace: true,	// 命名空間
  state,
  mutations,
  actions,
  getters
}

如果沒有namespace,那麼預設地每一個xxx.vue文件都會與store文件夾下的xxx.js相對應

vue寫法

1. 直接獲取

直接從user.js模塊中獲取state

<!-- user.vue -->
<div class="display-1">{{this.$store.state.user.count}}</div>

2. computed獲取

用computed監聽Vuex中state的變化, 及時渲染到界面上。如果在data中接收Vuex的state, 那麼有可能監聽不到state的變化[1], 一句話就是用computed接受Vuex的狀態

computed介紹:

  1. 用於變數或方法的複雜邏輯, 如vue官網的反轉字元串例子
  2. 相較於methods, computed有緩存機制, 相同的結果不會重覆計算, 而methods中的方法是每次調用都會計算
// 從vuex中引入mapState
import { mapState } from 'vuex'
<!-- user.vue html部分 -->
<div class="display-1">{{counter}}</div>
<div class="display-1">{{tag}}</div>
// user.vue computed部分 第一種寫法
computed:mapState('user', {
   counter: state => state.counter // 註意寫法,沒中括弧
}),
// user.vue computed部分 第二種寫法, 普通函數
computed:mapState('user', {
    counter: function(state) {
    	return state.counter
    }
}),
// user.vue computed部分 第三種寫法
computed:mapState("user", ['counter'])
// user.vue computed部分 第四種寫法
// 方法與mapState共存
computed:{
    tag(){	// 方法
        return 'something'
    },
    ...mapState('user', {
	counter: function(state) {
    	    return state.counter
    	}
    }),
}

mapState({}|[])函數, 專門用來接收來自Vuex中的state, 接受一個對象或者一個數組,

...mapState()介紹:

因為mapState()不能直接寫進computed對象中, 而computed的方法必須寫進computed對象中, 所以為了讓方法和state共存引入......mapState()寫法誕生

...為對象擴展符, 加上之後就可以在computed這個對象中與其他方法共存,沒有方法時可以直接上第一、二種寫法

觸發mutations

// 觸發mutations方式
this.$store.commit("mutationName", [parameter])
methods: {
  increment() {
    this.$store.commit('user/increment')
  },
  decrement() {
    this.$store.commit('user/decrement')
  }
},

代碼

index.vue中引用user.js模塊

// index.vue
<template>
  <div id="index">
    <div class="display-1">
      <b-icon icon="person"></b-icon>
      <b-icon icon="person-fill"></b-icon>
      <b-icon icon="triangle"></b-icon>
    </div>
    <div class="display-1">{{counter}}</div>
    <div class="display-1">{{tag}}</div>
    <div>
      <b-button variant="outline-success" @click="increment">增加</b-button>
      <b-button variant="outline-success" @click="decrement">減少</b-button>
    </div>
  </div>
</template>

<script>
import { mapState } from 'vuex'
export default {
  // 初始化時觸發mutations
  fetch({ store }) {
    store.commit('user/increment') 
  },
  mounted() {},
  data() {
    return {}
  },
  methods: {
    increment() {
      this.$store.commit('user/increment')
    },
    decrement() {
      this.$store.commit('user/decrement')
    }
  },
  computed: {
      tag(){
          return 'something'
      },
      ...mapState('user', {
      	  counter: state => state.counter
      })
  },
  components: {}
}
</script>

<style scoped>
#index {
  min-height: 100%;
}
</style>

參考

[1]Vuex入門(2)—— state,mapState,...mapState對象展開符詳解. https://blog.csdn.net/dkr380205984/article/details/82185740


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 表結構 student(StuId,StuName,StuAge,StuSex) 學生表 teacher(TId,Tname) 教師表 course(CId,Cname,C_TId) 課程表 sc(SId,S_CId,Score) 成績表 問題十二:查詢至少學過學號為“1001”同學所有課程的其他同 ...
  • 一.前言 ​ 本文將指導搭建所有的MySQL主從同步架構方案: ​ 一主多從架構 ​ 主主雙向同步架構 ​ M-S-S三級級聯同步架構 ​ 多主多從架構 二.關於MySQL主從同步 ​ MySQL主從同步是構建大型,高性能應用的基礎,MySQL主從同步可以實現在從伺服器可以執行查詢工作(即我們常說的 ...
  • 用戶畫像標簽體系 ​ 用戶畫像的核心在於給用戶“打標簽”,每一個標簽通常是人為規定的特征標識,用高度精煉的特征描述一類人,例如年齡、性別、興趣偏好等,不同的標簽通過結構化的數據體系整合,就可與組合出不同的用戶畫像。 ​ 梳理標簽體系是實現用戶畫像過程中最基礎、也是最核心的工作,後續的建模、數據倉庫搭 ...
  • 公司一個老項目,sql server的 模糊查詢時,查詢條件包含 [] ,然後查詢結果就一直為空 查閱資料得知:如果 LIKE 模式中的轉義符後面沒有字元,則該模式無效並且 LIKE 返回 FALSE。如果轉義符後面的字元不是通配符,則將放棄轉義符並將該轉義符後面的字元作為該模式中的常規字元處理。這 ...
  • 這裡簡單介紹一下如何使用ORACLE資料庫的datapump工具導出、導入表結構定義。由於業務場景可能非常簡單,你不會遇到任何問題,也有可能業務場景非常複雜,你就會遇到一些雜七雜八的問題。下麵我簡單介紹一下個人遇到的需求。一批表準備歸檔,歸檔的策略為將UserA下麵的一批表T1、T2、、、、Tn,歸... ...
  • 一、編輯佈局 1.分別來寫兩個佈局:一個用於平板等大屏幕解析度的,一個用於手機等小屏幕解析度的,先寫小的,地址:layout/activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro ...
  • 在本文中,您將找到針對高級開發人員的iOS面試問題和解答。 當您準備進行技術性的iOS面試時,重要的是要瞭解您可能會被問到的話題以及經驗豐富的iOS開發人員的期望。這些問題被許多公司用來衡量iOS候選人的經驗水平。它們涵蓋了iOS開發的各個方面,旨在接觸對該平臺的廣泛瞭解。畢竟,高級開發人員有望能夠 ...
  • # 3.柵格系統 介紹的是 4.5.x版本 一行最多放12列 - class類介紹 最外層容器: 1.container-fluid:寬度100%,和body的寬度一樣 2.container:寬度是一個具體數值,但是會根據用戶屏幕大小來改變 行類 1.row:分行 列類: 5個響應層 後面的*表示 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...