前提・実現したいこと
Vuexのstateの値をcomponentで変更した際に、変更した内容をリアルタイムにDOMに反映したい。
環境
- Vue 3
- WSL2 + Docker
npmPackages
1npmPackages: 2 @vue/babel-helper-vue-jsx-merge-props: 1.2.1 3 @vue/babel-helper-vue-transform-on: 1.0.2 4 @vue/babel-plugin-jsx: 1.0.6 5 @vue/babel-plugin-transform-vue-jsx: 1.2.1 6 @vue/babel-preset-app: 4.5.13 7 @vue/babel-preset-jsx: 1.2.4 8 @vue/babel-sugar-composition-api-inject-h: 1.2.1 9 @vue/babel-sugar-composition-api-render-instance: 1.2.4 10 @vue/babel-sugar-functional-vue: 1.2.2 11 @vue/babel-sugar-inject-h: 1.2.2 12 @vue/babel-sugar-v-model: 1.2.3 13 @vue/babel-sugar-v-on: 1.2.3 14 @vue/cli-overlay: 4.5.13 15 @vue/cli-plugin-babel: ~4.5.0 => 4.5.13 16 @vue/cli-plugin-eslint: ~4.5.0 => 4.5.13 17 @vue/cli-plugin-router: ~4.5.0 => 4.5.13 18 @vue/cli-plugin-vuex: 4.5.13 19 @vue/cli-service: ~4.5.0 => 4.5.13 20 @vue/cli-shared-utils: 4.5.13 21 @vue/compiler-core: 3.0.11 22 @vue/compiler-dom: 3.0.11 23 @vue/compiler-sfc: ^3.0.0 => 3.0.11 24 @vue/compiler-ssr: 3.0.11 25 @vue/component-compiler-utils: 3.2.0 26 @vue/devtools-api: 6.0.0-beta.11 27 @vue/preload-webpack-plugin: 1.1.2 28 @vue/reactivity: 3.0.11 29 @vue/runtime-core: 3.0.11 30 @vue/runtime-dom: 3.0.11 31 @vue/shared: 3.0.11 32 @vue/web-component-wrapper: 1.3.0 33 eslint-plugin-vue: ^7.0.0 => 7.9.0 34 vue: ^3.0.0 => 3.0.11 35 vue-eslint-parser: 7.6.0 36 vue-hot-reload-api: 2.3.4 37 vue-loader: 15.9.7 (16.2.0) 38 vue-router: ^4.0.0-0 => 4.0.8 39 vue-style-loader: 4.1.3 40 vue-template-es2015-compiler: 1.9.1 41 npmGlobalPackages: 42 @vue/cli: 4.5.12
解決方法をお聞きしたいこと
下記ソースコードで、画面上の数値がカウントアップされていきませんでした。
mutationsのincrementを呼び出す形にもしてみましたが、結果は同様でした。
また、いずれの場合でもコンソール上ではカウントアップされていることが確認できます。
何故、画面に更新された値が反映されないのでしょうか。また反映させる方法はありますでしょうか。
ソースコード
main
1import { createApp } from 'vue' 2import App from './App.vue' 3import router from './router/index.js' 4import store from './store.js' 5 6const app = createApp(App) 7 8app.use(store) 9app.use(router) 10app.mount('#app')
store
1import { createStore } from 'vuex' 2 3export default createStore({ 4 state: { 5 count: 2 6 }, 7 mutations: { 8 increment(state) { 9 state.count++ 10 } 11 }, 12 actions: { 13 }, 14 modules: { 15 } 16}) 17
Home
1<template> 2 <div class="home"> 3 4 <p>{{ count }}</p> 5 <p>{{ this.$store.state.count }}</p> 6 <button @click="increment">+1</button> 7 <button @click="decrement">-1</button> 8 9 </div> 10</template> 11 12<script> 13 14export default { 15 name: "Home", 16 computed: { 17 count() { 18 return this.$store.state.count; 19 }, 20 }, 21 methods: { 22 increment() { 23 this.$store.state.count++; 24 console.log(this.$store.state.count); 25 // this.$store.commit("increment"); 26 }, 27 decrement() { 28 this.$store.state.count--; 29 console.log(this.$store.state.count); 30 }, 31 }, 32}; 33</script> 34
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/17 23:09 編集
2021/06/18 05:06 編集
2021/06/19 01:42