import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); const actions = { saveUser(context,value){ context.commit("SAVE_USERS",value); }, saveVip(context,value){ context.commit("SAVE_VIP",value); }, reverseName(context,value){ value = value.split('').reverse().join(''); context.commit("REVERSE_NAME",value) } }; const mutations = { SAVE_USERS(state,value){ // unshift往第一个位置加东西,push往最后加东西 state.users.push(value); }, SAVE_VIP(state,value){ // unshift往第一个位置加东西,push往最后加东西 state.vips.push(value); }, REVERSE_NAME(state,value){ state.Name = value; } }; const state = { users : [ {id : "001",name : "Jack"}, {id : "002",name : "Rose"}, {id : "003",name : "Tom"}, {id : "004",name : "Jerry"} ], vips : [ {id : "001",name : "Jack"}, {id : "002",name : "Rose"}, {id : "003",name : "Tom"}, {id : "004",name : "Jerry"} ], Name : "" }; // 全新的配置项getters const getters = { // 每一个getter就是一个计算属性 // 每一个getter都会接收一个state对象 reversedName(state){ // 可以视为VUE中的计算属性computed return state.Name.split('').reverse().join(''); } }; export default new Vuex.Store({actions,mutations,state,getters});
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const actions = {
saveUser(context,value){
context.commit("SAVE_USERS",value);
},
saveVip(context,value){
context.commit("SAVE_VIP",value);
},
reverseName(context,value){
value = value.split('').reverse().join('');
context.commit("REVERSE_NAME",value)
}
};
const mutations = {
SAVE_USERS(state,value){
// unshift往第一个位置加东西,push往最后加东西
state.users.push(value);
},
SAVE_VIP(state,value){
// unshift往第一个位置加东西,push往最后加东西
state.vips.push(value);
},
REVERSE_NAME(state,value){
state.Name = value;
}
};
const state = {
users : [
{id : "001",name : "Jack"},
{id : "002",name : "Rose"},
{id : "003",name : "Tom"},
{id : "004",name : "Jerry"}
],
vips : [
{id : "001",name : "Jack"},
{id : "002",name : "Rose"},
{id : "003",name : "Tom"},
{id : "004",name : "Jerry"}
],
Name : ""
};
// 全新的配置项getters
const getters = {
// 每一个getter就是一个计算属性
// 每一个getter都会接收一个state对象
reversedName(state){
// 可以视为VUE中的计算属性computed
return state.Name.split('').reverse().join('');
}
};
export default new Vuex.Store({actions,mutations,state,getters});
<template> <div> <h1>用户列表</h1> <input type="text" v-model="username"/> <button @click="saveUser()">保存用户</button> <ul> <li v-for="user in users" :key="user.id"> 用户名:{{ user.name }} </li> </ul> <h3>当前用户数量{{ users.length }}</h3> <h3>当前会员数量{{ vips.length }}</h3> <h3>{{ reversedName }}</h3> </div> </template> <script> // vuex自带的mapStated对象,是一个专门用于state对象映射的一个对象 import { mapState,mapGetters } from 'vuex'; export default { name : "User", data(){ return { username : "" } }, // mounted(){ // 这个配置项,前面是名字,后面是去store.js下找的属性的名字,必须双引号括起来.不然会在当前vc中找了 // const x = mapState({users : "users",vips : "vips"}); // }, computed : { // users(){ // return this.$store.state.users; // }, // vips(){ // return this.$store.state.vips; // }, // 对象形式写法 // ...mapState({users : "users",vips : "vips"}), // 数组形式写法,要求计算属性名字和state中的属性名字一致 ...mapState(["users","vips"]), // reversedName(){ // return this.$store.getters.reversedName; // } ...mapGetters(["reversedName"]) }, methods : { saveUser(){ const id = this.users.length + 1; const user = {"id" : id,"name" : this.username}; // 如果action中的逻辑非常简单,可以直接commit // this.$store.dispatch("saveUser",user); this.$store.commit("SAVE_USERS",user); this.username = ""; } } } </script> <style> </style>
<template>
<div>
<h1>用户列表</h1>
<input type="text" v-model="username"/>
<button @click="saveUser()">保存用户</button>
<ul>
<li v-for="user in users" :key="user.id">
用户名:{{ user.name }}
</li>
</ul>
<h3>当前用户数量{{ users.length }}</h3>
<h3>当前会员数量{{ vips.length }}</h3>
<h3>{{ reversedName }}</h3>
</div>
</template>
<script>
// vuex自带的mapStated对象,是一个专门用于state对象映射的一个对象
import { mapState,mapGetters } from 'vuex';
export default {
name : "User",
data(){
return {
username : ""
}
},
// mounted(){
// 这个配置项,前面是名字,后面是去store.js下找的属性的名字,必须双引号括起来.不然会在当前vc中找了
// const x = mapState({users : "users",vips : "vips"});
// },
computed : {
// users(){
// return this.$store.state.users;
// },
// vips(){
// return this.$store.state.vips;
// },
// 对象形式写法
// ...mapState({users : "users",vips : "vips"}),
// 数组形式写法,要求计算属性名字和state中的属性名字一致
...mapState(["users","vips"]),
// reversedName(){
// return this.$store.getters.reversedName;
// }
...mapGetters(["reversedName"])
},
methods : {
saveUser(){
const id = this.users.length + 1;
const user = {"id" : id,"name" : this.username};
// 如果action中的逻辑非常简单,可以直接commit
// this.$store.dispatch("saveUser",user);
this.$store.commit("SAVE_USERS",user);
this.username = "";
}
}
}
</script>
<style>
</style>
<template> <div> <h1>会员列表</h1> <input type="text" v-model="username"/> <button @click="saveVip()">保存用户</button> <ul> <li v-for="vip in vips" :key="vip.id"> 用户名:{{ vip.name }} </li> </ul> <h3>当前用户数量{{ users.length }}</h3> <h3>当前会员数量{{ vips.length }}</h3> <h3>{{ reversedName }}</h3> </div> </template> <script> import { mapState,mapGetters } from 'vuex'; export default { name : "Vip", data(){ return { username : "" } }, computed : { // users(){ // return this.$store.state.users; // }, // vips(){ // return this.$store.state.vips; // }, ...mapState(["users","vips"]), ...mapGetters(["reversedName"]) // reversedName(){ // return this.$store.getters.reversedName; // } }, methods : { saveVip(){ const id = this.vips.length + 1; const vip = {"id" : id,"name" : this.username}; // 如果action中的逻辑非常简单,可以直接commit // this.$store.dispatch("saveVip",vip); this.$store.commit("SAVE_VIP",vip); this.username = ""; } } } </script> <style> </style>
<template>
<div>
<h1>会员列表</h1>
<input type="text" v-model="username"/>
<button @click="saveVip()">保存用户</button>
<ul>
<li v-for="vip in vips" :key="vip.id">
用户名:{{ vip.name }}
</li>
</ul>
<h3>当前用户数量{{ users.length }}</h3>
<h3>当前会员数量{{ vips.length }}</h3>
<h3>{{ reversedName }}</h3>
</div>
</template>
<script>
import { mapState,mapGetters } from 'vuex';
export default {
name : "Vip",
data(){
return {
username : ""
}
},
computed : {
// users(){
// return this.$store.state.users;
// },
// vips(){
// return this.$store.state.vips;
// },
...mapState(["users","vips"]),
...mapGetters(["reversedName"])
// reversedName(){
// return this.$store.getters.reversedName;
// }
},
methods : {
saveVip(){
const id = this.vips.length + 1;
const vip = {"id" : id,"name" : this.username};
// 如果action中的逻辑非常简单,可以直接commit
// this.$store.dispatch("saveVip",vip);
this.$store.commit("SAVE_VIP",vip);
this.username = "";
}
}
}
</script>
<style>
</style>
<template> <div> <input type="text" v-model="$store.state.Name" @keydown.13="submit()"/> <button @click="submit">按一下</button> <h3>{{ reversedName }}</h3> </div> </template> <script> import { mapState,mapGetters } from 'vuex'; export default { name : "Name", methods : { submit(){ this.$store.dispatch("reverseName",Name); } }, computed : { // reverseName(){ // return this.$store.getters.reversedName; // } ...mapGetters(["reversedName"]), ...mapState(["Name"]) // 双向数据绑定不能用这种方法,会导致报错 // Name : { // get(){ // return this.$store.state.Name; // }, // set(value){ // this.$store.state.Name = value; // } // } } } </script> <style> </style>
<template>
<div>
<input type="text" v-model="$store.state.Name" @keydown.13="submit()"/>
<button @click="submit">按一下</button>
<h3>{{ reversedName }}</h3>
</div>
</template>
<script>
import { mapState,mapGetters } from 'vuex';
export default {
name : "Name",
methods : {
submit(){
this.$store.dispatch("reverseName",Name);
}
},
computed : {
// reverseName(){
// return this.$store.getters.reversedName;
// }
...mapGetters(["reversedName"]),
...mapState(["Name"])
// 双向数据绑定不能用这种方法,会导致报错
// Name : {
// get(){
// return this.$store.state.Name;
// },
// set(value){
// this.$store.state.Name = value;
// }
// }
}
}
</script>
<style>
</style>