Мы хотим поделиться значениями между разными страницами. Мы попробовали это следующими способами.
На той же странице State возвращал правильное значение, но на разных страницах State не устанавливалось. Мы делаем что-то не так? Или Vuex Store не может обмениваться значениями между страницами?
Мы заменили их упрощенными кодами для этого вопроса. Коды, вызывающие проблему, более сложны.
/store/index.js
const NOT_SET = null
export const state = () => ({
value: NOT_SET,
})
export const mutations = {
setValue(state, value) {
state.value = value
},
}
/pages/index.vue
<script>
import { mapState, mapMutations } from 'vuex'
export default {
computed: {
...mapState(['value']),
},
mounted() {
this.setValue(100)
},
methods: {
...mapMutations(['setValue']),
},
}
</script>
/pages/_XXX/index.vue
<script>
import { mapState } from 'vuex'
export default {
computed: {
...mapState(['value']),
},
}
</script>
Ах! Да. Мы используем теги a для ссылок. Мы попробуем это.
Хорошая догадка @LawrenceCherone! Теги a (с target = "_blank") следует использовать только тогда, когда вы хотите открыть какую-либо внешнюю веб-страницу, в противном случае, если вы хотите перейти внутрь своего приложения Nuxt, вам следует использовать nuxt-link.
Спасибо, @LawrenceCherone! С nuxt-link мы могли бы решить эту проблему.





Вы не можете использовать теги a, потому что каждый раз они будут стирать весь SPA. Если вы находитесь в контексте Vue, вам нужно использовать маршрутизатор Vue, поэтому nuxt-link является обязательным, если вы хотите сохранить приложение в течение всего времени.
Это также значительно повысит производительность всего веб-сайта.
Потому что в противном случае Vuex может полностью разделить состояние по всей странице. На самом деле он предназначен для того, чтобы поделиться им со всем приложением Vue.
Спасибо, @kissu. Мы понимаем разницу между тегами nuxt-link и a.
Я предполагаю, что вы не используете тег
nuxt-link, а вместо этого обычный тегa, или вы напрямую посещаете страницу,pages/_XXX/index.vueне имеет кода для установки значения