在vue3中使用vuex

发布一下 0 0

1. 下载安装 cnpm install vuex -S ;本次下载的版本是 "vuex": "^4.0.2"

2.创建store/index.js

import { createStore } from 'vuex'import http from '@/utils/http.js'// Create a new store instance.const store = createStore({  state () {    return {      count: 0,      user:{}    }  },  mutations: {    increment (state,num) {      state.count += num;    },    setUser(state,user){        state.user = user;    }  },  actions:{      getUserInfo(context,params){        return new Promise((resolve,reject)=>{            http.get("/pyapi/test/user",params).then(res=>{                if(res.status == 200){                    context.commit("setUser",res.result)                    resolve(res.result)                }else{                    reject({})                }            }).catch(e=>{                reject(e)            })        })      }  }})export default store

3. 在main.js中

import store from './store/index.js'const app = createApp(App)app.use(store)

4.在组件中使用

<template>  <div class="test">      <p>count:{{ count }}  <el-button @click="addCount">+2</el-button></p>  </div>    <div class="user">      <el-button @click="getUserInfo">getUserInfo</el-button>      <ul>        <li>name: {{user.name}}</li>        <li>age: {{user.age}}</li>      </ul>  </div></template><script> import $store from '@/store/index.js'import { computed } from 'vue';export default {  name: "testCom",  setup() {    let count = computed(()=>{      return $store.state.count    })    const addCount = ()=>{      $store.commit('increment',2) // 同步    }    let user = computed(()=>{      return $store.state.user    })    const getUserInfo = ()=>{       $store.dispatch('getUserInfo', {id:111}); // 异步    }    return {      count,      addCount,      user,      getUserInfo    };  },};</script><style scoped></style>

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/67794.html