この記事では、VueX のステート マネージャーのアプリケーションについて紹介します。必要な方は参考にしていただければ幸いです。
VueX State Manager
cnpm i vuex axios -S 1 创建Vuex 仓库 import Vue from 'vue' import Vuex from 'vuex' vue.use(Vuex) const store = new VueX.store({ state: {//存放状态}, mutations:{//唯一修改状态的地方,不在这里做逻辑处理} }) export default store 2 在入口文件main.js下引入store import store from './store/index.js' 将store 放到根实例里 以供全局使用 new Vue({ el:'#app', store, components:{App}, template:<App/> }) 开始使用store(以home组件为例)
Vuex の使用も進歩的です。最初は最も単純なものから始めて、レベルに応じて Vuex の使用を強化していきます。最も基本的な t1 レベルから始めて、最初の 3 つの最も基本的なバージョンを要約し、次に時間があるときに他のバージョンを要約することができます。
T1 レベル
1. 在hoome/script.js中进行请求数据 import Vue from 'vue' import axios from 'axios' export default { mounted(){ axios.get('请求数据的接口') .then((res)=>{this.$store.commit('changeList',res.data)}) //changeList相当于调用了在store.mutations中定义的修改状态的方法 //res.data 就是在改变状态时要修改的数据,需要在这传递过去。 .catch((err)=>{console,log(err)}) } } 2. 在store/index.js中定义 import Vue from 'vue' import Vuex from 'vuex' vue.use(Vuex) const store = new VueX.store({ state: { //存放状态 list: [ ] //存放一个空的数组 }, mutations:{ //唯一修改状态的地方,不在这里做逻辑处理 //定义一个修改list的方法 //state 指上面存放list的对象,data 为在请求数据出传过来请求到的数据 changeList (state,data) { state.list = data //将请求来的数据赋值给list } } }) export default store 3. 在home/index.vue中渲染 <template> //渲染数据的时候通过this.store.state.list直接从store中取数据 //还可以从其他组件通过这种方法去用这个数据无需重新获取 <li v-for='item of this.store.state.list' :key='item.id'>{{item.name}}</li> </template>
注: ホーム コンポーネントで取得したデータが他のコンポーネントで使用できる場合、ページが更新されると、デフォルトでホームページが表示されます。これは、データを変更することと同じです。他のページをクリックしてもデータにアクセスできます。ユーザー コンポーネントで取得したデータをホーム コンポーネントで使用する場合、現時点ではユーザー コンポーネントでデータの変更をトリガーするメソッドがないため、ページが更新されたときにデータは表示されません。データは空です。ユーザーページをクリックするとデータが表示されます。このとき、ホームページをクリックすると、ユーザーコンポーネントから取得したデータがホームコンポーネントで表示されます。この問題を解決する方法は、データをローカルに保存するか、ホームページ上でデータをリクエストすることです
T2 レベル
ページがレンダリングされるとき、次のように this.store.state を通じてデータを取得する必要があります。書き込みメソッドが長すぎてあまり良くありません
この問題を解決するには、mapState と組み合わせて計算された属性を使用してください
1 在home/script.js中进行操作 import Vue from 'vue' import mapState from 'vuex' import axios from 'axios' export default { computed:{ //mapState为辅助函数 ...mapState(['list']) }, mounted(){ axios.get('请求数据的接口') .then((res)=>{this.$store.commit('changeList',res.data)}) .catch((err)=>{console,log(err)}) } } 2 在home/index.vue中渲染 <template> <li v-for='item of list' :key='item.id'>{{item.name}}</li> </template>
T3 レベル
定数を使用してイベント タイプを置き換えます (ステータスを表示しやすく、メンテナンスを容易にします)
1 在store下创建mutation-type.js export const CHANGE_LIST = 'CHANGE_LIST' 2 在store/index.js引入mutation-type.js import Vue from 'vue' import Vuex from 'vuex' import {CHANGE_LIST } from‘./mutation-type.js’ vue.use(Vuex) const store = new VueX.store({ state: { list: [ ] //存放一个空的数组 }, mutations:{ //我们可以使用Es6风格的计算属性命名功能来使用一个常量作为函数名 [CHANGE_LIST] (state,data) { state.list = data //将请求来的数据赋值给list } } }) export default store 3 在home/script.js中进行引入 import Vue from 'vue' import mapState from 'vuex' import axios from 'axios' import {CHANGE_LIST} from ‘../../store/mutation-type.js’ export default { computed:{ //mapState为辅助函数 ...mapState(['list']) }, mounted(){ axios.get('请求数据的接口') .then((res)=>{this.$store.commit(CHANGE_LIST,res.data)}) .catch((err)=>{console,log(err)}) } }
おすすめ関連記事:
vueでの権限制御ダイナミックルーティングの作成手順(写真と本文)
DOMを操作するvueコマンドと$nextTickの違いは何ですか?
以上がVueX でのステート マネージャーのアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。