Mam sobie oto taki wrapik:
<template>
<div>
<component :is="currentView"></component>
</div>
</template>
<script>
import AddForm from './partials/add.vue';
import Preview from './partials/preview.vue';
import { mapState } from 'vuex';
export default {
name: 'app',
data() {
return {
message: 'Hello, Vue!!!!',
currentView: 'AddForm'
};
},
computed: {
changeView() {
return 'AddForm';
},
...mapState({changeView: 'section.post.changeView'})
},
watch: {
changeView(newValue, oldValue) {
}
},
components: {
AddForm,
Preview
}
};
</script>
Oraz taki stan na storze.
section: {
post: {
changeView: false
}
}
Który się mutuje tu:
offerService.set(state.offer).then(response => state.sendResult = response);
window.setTimeout(() => state.section.post.changeView = true, 3000);
Stan się zmienił co nie? więc i watch powinen zaregować. No właśnie nie zaregował.
Co chce osiągnać, gdy pewna częśc użytkownik wypełni formularz, i bedzie sukces, to chce mu zmienić po określonym czasie widok, jeśli flaga będzie na true. Ale tu nic takowego się nie dzieje. Pomóżcie :3
Rozwiązanie problemu
<template>
<div>
<component :is="$store.state.section.post.view"></component>
</div>
</template>
<script>
import AddForm from './partials/add.vue';
import Preview from './partials/preview.vue';
export default {
name: 'postSection',
data() {
return {};
},
components: {
AddForm,
Preview
}
};
</script>
metoda na storze.
SEND_OFFER(state, payload) {
offerService.set(state.offer).then(response => state.sendResult = response);
window.setTimeout(() => state.section.post.view = 'preview', 3000);
}