0π
I was struggling with this problem for two days until I finally found the solution.
My problem was because I was using $navigateTo
without specifying the frame, I was navigating the whole component. I discovered that store was only bound to the first component that is passed to the render function in main.js
Here is how my main.js looked:
new Vue({
store,
render: h => h('frame', [h(store.state.is_logged_in ? Main : Login)]),
created() {
this.$store.commit('setNav', this.$navigateTo);
if (this.$store.state.is_logged_in) {
this.$store.dispatch('init');
}
},
}).$start();
I discovered that If is_logged_in was true this.$store
, or mapActions
etc only worked in Main
and itβs child components, otherwise it would only work in Login
and itβs child components. Then I was reading This and saw the following code in the store
code of the example:
import Vue from 'nativescript-vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({...});
Vue.prototype.$store = store;
module.exports = store;
So I added the line Vue.prototype.$store = store;
to my own store definition and finally my problem was solved. This really gave me such a hard time. Hope I can save somebody.