Crear almacén vuex
- Cree un directorio de tienda en src y cree un archivo index.js en el directorio
- El estado almacena atributos, las mutaciones proporcionan métodos para modificar atributos
import Vue from 'vue'
import 'es6-promise/auto'
import Vuex from 'vuex'
Vue.use(Vuex)
const store=new Vuex.Store({
state:{
str:"hello world",
count:"999"
},getters:{
getStr:(state)=>(iden)=>{
let str=state.str.split('').reverse().join('');
if(iden==0){
str=str.toUpperCase();
}
return str;
}
},mutations:{
changestr(state){
state.str="world hello";
},increment(state,data){
state.str=data.params.str;
state.count=data.params.count;
}
}, strict: true
});
export default store
- Introduzca el archivo store / index.js en main.js
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
store,
components: {
App },
template: '<App/>'
})
Leer y modificar el valor del almacén vuex en el componente.
<template>
<div class="hello">
<!-- 直接使用this.$store.state.属性名进行访问 -->
第一种访问方式:{
{
this.$store.state.str }}----{
{
this.$store.state.count }}<br />
<!-- 采用辅助函数进行访问 -->
第二种访问方式:{
{
str }}----{
{
count }}<br />
<input type="text" v-model="bstr" /><br />
<input type="text" v-model="bcount" /><br />
<button @click="click()">修改</button><br>
{
{
this.$store.getters.getStr(1)}}<br />
{
{
this.$store.getters.getStr(0)}}
<hr>
<HelloWorld1></HelloWorld1>
</div>
</template>
<script>
import {
mapState } from "vuex";
import HelloWorld1 from "./HelloWorld1"
export default {
data() {
return {
bstr: "",
bcount: "",
};
},
components:{
HelloWorld1
},
computed: {
...mapState(["str", "count"]),
},
methods: {
click() {
let that = this;
this.$store.commit({
type: "increment",
params: {
str: that.bstr,
count: that.bcount,
},
});
},
},
};
</script>
Subpágina
<template>
<div>
第一种访问方式:{
{
this.$store.state.str }}----{
{
this.$store.state.count }}<br />
</div>
</template>>