node.js、electron、vue、vue-cli をインストール後以下のコマンドでプロジェクトを自動作成します。
vue init simulatedgreg/electron-vue my-project
出来上がったプロジェクトは store がデフォルトで作成されていますが、この内容(Counter.jsのmainの値)をmain.jsで参照す るにはどのようにしたら良いのでしょうか?
以下の★のところでエラーが発生してしまいます。
main.js 以外はデフォルトのコードのままです。
最終的にはmain.js以外からも参照したいのですがとりあえずmain.jsからと思い色々試しています。
src/renderer/main.js
js
1import store from './store' 2// ・・・中略・・・ 3// 元は無かったコード(begin) 4var ap = 5// 元は無かったコード(end) 6new Vue({ 7 components: { App }, 8 router, 9 store, 10 template: '<App/>' 11}).$mount('#app') 12 13// 元は無かったコード(begin) 14console.log('ap=' + ap.$store) 15for (var item in ap.$store.modules) { console.log(item) } 16console.log('ap=' + ap.$store.modules.Counter.state) // ★ 17// ここでエラー: 18// Uncaught TypeError: Cannot read property 'Counter' of undefined 19// 元は無かったコード(end) 20
src/renderer/store/index.jp
js
1import Vue from 'vue' 2import Vuex from 'vuex' 3 4import modules from './modules' 5 6Vue.use(Vuex) 7 8export default new Vuex.Store({ 9 modules, 10 strict: process.env.NODE_ENV !== 'production' 11})
src/renderer/store/modules/index.js
js
1const files = require.context('.', false, /.js$/) 2const modules = {} 3 4files.keys().forEach(key => { 5 if (key === './index.js') return 6 modules[key.replace(/(./|.js)/g, '')] = files(key).default 7}) 8 9export default modules
src/renderer/store/modules/Counter.js
js
1const state = { 2 main: 0 3} 4 5const mutations = { 6 DECREMENT_MAIN_COUNTER (state) { 7 state.main-- 8 }, 9 INCREMENT_MAIN_COUNTER (state) { 10 state.main++ 11 } 12} 13 14const actions = { 15 someAsyncTask ({ commit }) { 16 // do something async 17 commit('INCREMENT_MAIN_COUNTER') 18 } 19} 20 21export default { 22 state, 23 mutations, 24 actions 25}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/08 05:01
2018/01/08 05:34
2018/01/08 10:09
2018/01/08 14:12