以前に vue.js を使用したことがある場合は、vue のさまざまなコンポーネント間で値を渡す苦労を知っているはずです。vue では、vuex を使用して必要な状態を保存できます。値について、vuex でよく使用される知識ポイントをいくつか見てみましょう。皆さんのお役に立てれば幸いです。
1. Vuex を使用する理由
1. 複数のコンポーネントが同じ状態に依存しており、コンポーネント間で通信メソッドを使用することは、多層のネストなど、非常に煩雑になります。コンポーネントです。
2. グローバルに保存する必要があるデータ (ユーザー、権限情報、グローバル システム設定など)
#2. Vuex の 5 つのコア属性
1 , state: ストレージ状態// store.jsconst store = new Vuex.Store({ state: { count: 0 }});// 组件里获取count值$store.state.count
// store.jsconst store = new Vuex.Store({ state: { count: 1, sum: 2 }, getters: { getCountAndSum: (state,getters) => { return state.count + state.sum; } }});// 其他组件获取getter$store.getters.getCountAndSum
const store = new Vuex.Store({ state: { count: 1 }, mutations: { increment (state, obj) { state.count += obj.n; } }});// 其他组件调用mutations的方法$store.commit('increment', {n: 100});
const store = new Vuex.Store({ state: { count: 1 }, mutations: { increment (state, obj) { state.count += obj.n; } }, actions: { increment (context) { context.commit('increment'); } }});// 其他组件调用actions的方法$store.dispatch('increment');
#
const a = { state: { count: 0 }, getters: { getCount2 (state, getters, rootState) { return state.count + 2; } }, mutations: { increment (state, getters, rootState) { state.count++; } }, actions: { increment (context) { // context.state.count; // context.rootState.count; context.commit('increment'); } }};const b = {};const store = new Vuex.Store({ modules: { a, b }});// 其他组件调用 (获取state的变量需要加上引入的module的别名)$store.state.a$store.state.b
#
<template> <div class="about"> <h1>count: <span>{{count}}</span></h1> <h1>getCount: <span>{{$store.getters.getCount}}</span></h1> <h1>sum: <span>{{sum}}</span></h1> <h1>getSum: <span>{{$store.getters.getSum}}</span></h1> <button @click="clickB">test </button> </div></template><script>import {mapState, mapGetters, mapMutations, mapActions} from 'vuex'; export default { name: 'about', data () { return { count: 0, sum: 0 } }, computed: { ...mapState({ count: state => state.count, countAlias: 'count', countPlusLocalState (state) { return state.count + this.localCount; } }), ...mapGetters([ 'getCount', 'getSum' ]) }, mounted () { this.count = this.$store.state.count; this.sum = this.$store.state.a.sum; }, methods:{ ...mapMutations( 'add','addO' ), ...mapActions([ 'add','addO' ]), clickB () { this.$store.dispatch('add'); this.$store.dispatch('addO'); } } }</script>
をご覧ください。 !
2020 フロントエンド vue インタビューの質問の概要 (回答付き)vue チュートリアルの推奨事項: 最新の 5 つの vue。 2020 年の js ビデオ チュートリアル 選択してください
プログラミング入門
以上がVuexの共通知識(まとめ)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。