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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...