Вариант 1: Навигационная защита
Вы можете использовать так называемую Навигационная защита , которая позволяет добавлять глобальные действия до, после и при обновлении маршрута.Вы также можете добавить его непосредственно в свой компонент с помощью In-component Guards , который позволит вам сохранить содержимое данных search
.
const VueFoo = {
// I guess your search attribute is in your data
data() {
return {
search: ''
}
},
mounted() {
// retrieve your information from your persistance layer
},
beforeRouteLeave (to, from, next) {
// called when the route that renders this component is about to
// be navigated away from.
// has access to `this` component instance.
// persist this.search in localstorage or wherever you like it to be stored
}
}
Вариант 2. Использование магазина (Vuex)
Если вы можете добавить Vuex Store
или любой другой магазин, я настоятельно рекомендую это сделать.Поскольку вы пометили квазар, я хочу сослаться на документацию Vuex Store , предоставленную там.По сути, вы можете передать свойство search
на аутсорсинг и позволить ему сохранить его в вашем приложении.
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
search_term: ''
},
mutations: {
SET_SEARCH_TERM (state, payload) {
state.search_term = payload.search_term
}
},
actions: {
SEARCH ({ commit, state }, payload) {
commit('SET_SEARCH_TERM', payload.search_term)
// your api call to search which can also be stored in the state
}
}
})
export default store
В вашем компоненте, где вы хотите сохранить поисковый запрос, используя мутацию (не привязанную к действию).):
store.commit('SET_SEARCH_TERM', {
search_term: this.search // your local search query
})
В вашем коде, где вы запускаете действие ACTION для поиска, если хотите сохранять его при каждом поиске
store.dispatch('SEARCH', {
search_term: this.search
})
Получаете доступ к свойству search_term
или как хотите его вызыватьможет быть сделано с использованием вычисляемого свойства.Вы также можете напрямую связать состояние и мутации без необходимости использовать навигационную охрану:
// your Vue component
computed: {
search: {
get () {
return this.$store.state.search_term
},
set (val) {
this.$store.commit('SET_SEARCH_TERM', { search_term: val })
}
}
}
Обязательно изучите основную концепцию перед использованием: https://vuex.vuejs.org/