亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

vue 項(xiàng)目實(shí)戰(zhàn) (vue全家桶之--- vuex)

番茄西紅柿 / 1704人閱讀

摘要:官方文檔對(duì)的解讀是是一個(gè)專為應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。而就是為了解決這樣的問(wèn)題,把組件的共享狀態(tài)抽取出來(lái),以一個(gè)全局單例模式管理。我們還可以傳入?yún)?shù)傳入一個(gè)對(duì)象可以修改中的狀態(tài),但是并不是說(shuō)隨隨便便修改的比如說(shuō)

老規(guī)矩先安裝

npm install vuex --save

在看下面內(nèi)容之前 你應(yīng)該大概的看了一邊vuex官方的文檔對(duì)vuex有個(gè)大概對(duì)了解

首先

vuex 是什么?

vuex 是屬于vue中的什么,它在項(xiàng)目中扮演著一個(gè)什么樣的角色,起到什么作用,在項(xiàng)目中我是否要用到vuex。

官方文檔對(duì)vuex的解讀是:Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。

如果你是在開(kāi)發(fā)一個(gè)大型的應(yīng)用程序,組件與組件之間,兄弟組件之間,或者說(shuō)多層嵌套組件之間,你是無(wú)法傳遞數(shù)據(jù)的。子父組件之間,也只是說(shuō)通過(guò)事件保持?jǐn)?shù)據(jù)的一致性,也是很繁瑣的,會(huì)變得很不好管理。而vuex就是為了解決這樣的問(wèn)題,把組件的共享狀態(tài)抽取出來(lái),以一個(gè)全局單例模式管理。組件樹(shù)構(gòu)成了一個(gè)巨大的“視圖”,不管在樹(shù)的哪個(gè)位置,任何組件都能獲取狀態(tài)或者觸發(fā)行為,而且代碼將會(huì)變得更結(jié)構(gòu)化且易維護(hù)。

新建一個(gè)最簡(jiǎn)單的store

store.js

import Vue from vue
import Vuex from vuex

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0,
    me: {
      name: huangenai,
      age: 22,
      sex: 女
    },
      list: [{name: hea, age: 22}, {name: cpq, age: 23}]
  },
  mutations: {
    increment (state) {
      state.count++
    }
  }
})

main.js

import store from ./store.js

new Vue({
  el: #app,
  router,
  store,//加這個(gè)
  components: { App },
  template: <App/>
})

State

驅(qū)動(dòng)應(yīng)用的數(shù)據(jù)源,組件之間共享的狀態(tài)。

上面代碼中的 count 就是一個(gè)共享的數(shù)據(jù),me 也是一個(gè)共享的數(shù)據(jù)對(duì)象。

在組件中獲得state 中的count

this.$store.state.count

newvue.vue

<template>
    <div>
        new vue page
        <p>{{count}}p>
    div>
template>

<script>
export default {
  name: newvue,
  data () {
    return {
    }
  },
  computed: {
    count () {
      return this.$store.state.count
    }
  }
}
script>

<style scoped>
style>

為什么要寫在computed 里面呢,而不是寫在data里面,因?yàn)楫?dāng)state.count 變化的時(shí)候, 都會(huì)重新求取計(jì)算屬性,并且觸發(fā)更新相關(guān)聯(lián)的 DOM,如果你不理解可以先去看看computed

當(dāng)一個(gè)組件要引用到多個(gè)狀態(tài)的時(shí)候 ,一個(gè)個(gè)寫是不是很累。不用擔(dān)心,我們有mapState 輔助函數(shù)幫助我們生成計(jì)算屬性。

在組件中引用

import { mapState } from vuex
<template>
    <div>
        <p>{{count}}p>
        <p>{{countPlusLocalState}}p>
        <p>sex: {{sex}}p>
        <p>age: {{myAge}}p>
        <p>name: {{name}}p>
    div>
template>

<script>
import { mapState } from vuex
export default {
  name: newvue,
  data () {
    return {
      localCount: 1
    }
  },
  computed: {
    ...mapState({
      // 箭頭函數(shù)可使代碼更簡(jiǎn)練
      sex: state => state.me.sex,
      myAge: state => state.me.age,
      name: state => state.me.name,
      // 傳字符串參數(shù) age 等同于 `state => state.age`
      count: count,
      // 為了能夠使用 `this` 獲取局部狀態(tài),必須使用常規(guī)函數(shù)
      countPlusLocalState (state) {
        return state.count + this.localCount
      }
    })
  }
}
script>

<style scoped>
style>

假設(shè)computed 里面還有別的數(shù)據(jù),因?yàn)閙apstate返回來(lái)的是一個(gè)對(duì)象所以我們這樣寫可以將數(shù)據(jù)混入

computed: {
  localComputed () { /* ... */ },
  // 使用對(duì)象展開(kāi)運(yùn)算符將此對(duì)象混入到外部對(duì)象中
  ...mapState({
    // ...
  })
}

Mutation

你說(shuō)你想修改state的值,this.$store.state.count = 1 這樣可不可以 no no no....  所以就有了Mutation。

切記Mutation 必須是同步函數(shù)?。。?/h3>

想要修改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation。

在上面代碼我們新建一個(gè)store里面下的 有一個(gè)increment,就可以實(shí)現(xiàn)修改state里面的count

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count ++
    }
  }
})

那么如何調(diào)用increment呢??

調(diào)用 this.$store.commit(type)  類型叫increment 的 mutation。

this.$store.commit(increment)

我們還可以傳入?yún)?shù)

// ...
mutations: {
  increment (state, n) {
    this.$state.count = n
  }
}

store.commit(increment, 10)

傳入一個(gè)對(duì)象

mutations: {
  increment (state, data) {
    state.count += data.count
  }
}
store.commit(increment, {
  count: 10
})

mutations可以修改store中的狀態(tài),但是并不是說(shuō)隨隨便便修改的,比如說(shuō)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/1731.html

相關(guān)文章

  • JS中bind、call和apply的作用以及在TS裝飾器中的用法

    摘要:目錄,前言,,例子,直接調(diào)用,將指向另一個(gè)對(duì)象,傳遞參數(shù),,例子,直接調(diào)用,將指向另一個(gè)對(duì)象,傳遞參數(shù),合并數(shù)組,,例子,直接調(diào)用,將指向另一個(gè)對(duì)象,傳遞參數(shù),中裝飾器使用,總結(jié),相同點(diǎn),不同點(diǎn),前言,前言和在函數(shù)式編程時(shí)候非常有用,本? 目錄 1,前言 1,call 1.1,例子 1.2,直接調(diào)用 1.3,將this指向另一個(gè)對(duì)象 1...

    happyfish 評(píng)論0 收藏0
  • 前方來(lái)報(bào),八月最新資訊--關(guān)于vue2&3的最佳文章推薦

    摘要:哪吒別人的看法都是狗屁,你是誰(shuí)只有你自己說(shuō)了才算,這是爹教我的道理。哪吒去他個(gè)鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰(shuí)和你做朋友太乙真人人是否能夠改變命運(yùn),我不曉得。我只曉得,不認(rèn)命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...

    izhuhaodev 評(píng)論0 收藏0
  • Vue學(xué)習(xí)日記(一)——Vue介紹

    摘要:的核心庫(kù)只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫(kù)或已有項(xiàng)目整合。的目標(biāo)是通過(guò)盡可能簡(jiǎn)單的實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。并不是框架,只是和他旁邊的生態(tài)環(huán)境組成了一個(gè)框架,下面,貼一個(gè)官方的漸進(jìn)式框架介紹圖吧,方便理解。 前言 本人學(xué)習(xí)了一段時(shí)間的vue,并嘗試寫了一些小Demo之后,將vue投入了幾個(gè)項(xiàng)目之后,一直在邊學(xué)習(xí)邊使用,經(jīng)過(guò)看了vue,vuex,vue-route...

    王晗 評(píng)論0 收藏0
  • Vue學(xué)習(xí)日記(一)——Vue介紹

    摘要:的核心庫(kù)只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫(kù)或已有項(xiàng)目整合。的目標(biāo)是通過(guò)盡可能簡(jiǎn)單的實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。并不是框架,只是和他旁邊的生態(tài)環(huán)境組成了一個(gè)框架,下面,貼一個(gè)官方的漸進(jìn)式框架介紹圖吧,方便理解。 前言 本人學(xué)習(xí)了一段時(shí)間的vue,并嘗試寫了一些小Demo之后,將vue投入了幾個(gè)項(xiàng)目之后,一直在邊學(xué)習(xí)邊使用,經(jīng)過(guò)看了vue,vuex,vue-route...

    MasonEast 評(píng)論0 收藏0
  • 酷狗音樂(lè)- Vue / React 全家桶的兩種實(shí)現(xiàn)

    摘要:引言兩個(gè)月前用全家桶實(shí)現(xiàn)過(guò)一次酷狗音樂(lè),最近又用全家桶重構(gòu)了下,最終成果和的實(shí)現(xiàn)基本一致,放個(gè)圖手機(jī)預(yù)覽戳版本版本。的行為結(jié)構(gòu)表現(xiàn)分離,很明顯,而的分離雖然不是很明顯,但實(shí)際上也是有的。發(fā)送指令,最終會(huì)到里合并數(shù)據(jù),與中的類似。 引言 兩個(gè)月前用 Vue 全家桶實(shí)現(xiàn)過(guò)一次 酷狗音樂(lè),最近又用 React 全家桶重構(gòu)了下,最終成果和 Vue的實(shí)現(xiàn)基本一致,放個(gè)圖: showImg(htt...

    hot_pot_Leo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<