vuex 4.0

定义

store/index.js

  1. import { createStore } from 'vuex';
  2. export default createStore({
  3. state: {
  4. count:1
  5. },
  6. mutations: {
  7. addCount(state,value){
  8. state.count+=1;
  9. }
  10. },
  11. actions: {
  12. asyncAddCount({commit},value){
  13. setTimeout(()=>{
  14. commit('addCount',value)
  15. },1000)
  16. }
  17. },
  18. getters:{
  19. double(state){
  20. return state.count*2
  21. }
  22. },
  23. modules: {
  24. }
  25. });

main.js

  1. import { createApp } from 'vue';
  2. import App from './App.vue';
  3. import store from './store';
  4. createApp(App).use(store).mount('#app');

使用

  1. <template>
  2. <h2>vux:{{count}}</h2>
  3. <h2>vux:{{double}}</h2>
  4. <button @click="asyncAddCount">asyncAddCount</button>
  5. <button @click="addCount">addCount</button>
  6. </template>
  7. <script>
  8. import {useStore} from 'vuex'
  9. export default {
  10. setup(){
  11. const store = useStore()
  12. //☆☆写在这里的state/getters要不要写computed 取决于你的数据要不要动态
  13. let sum = store.state.sum;
  14. return {
  15. sum,
  16. count : computed(()=>store.state.count),
  17. double : computed(()=>store.getters.double),
  18. asyncAddCount : ()=>store.dispatch('asyncAddCount'),
  19. addCount : ()=>store.commit('addCount')
  20. }
  21. }
  22. }
  23. </script>

vue-route 4.0

定义

router.index.js

import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
  },
  {
    path: '/about',
    name: 'About',
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),
  },
];

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes,
});

export default router;

main.js

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';

createApp(App).use(router).mount('#app');

使用

import {useRouter,useRoute} from 'vue-router'

export default {
    setup(){
          const router = useRouter()
        const route = useRoute()

        router.push()
          route.query.xx
    },
}