vue元件前進狀態快取後退清除狀態
阿新 • • 發佈:2022-04-19
// 思路:利用元件內的路由守衛(Leave:離開時觸發)通過to.path或者from.path來判斷是前進還是後退(只適用於某些篩選條件返回上一層時還保留原值,若頁面輸入框過多,還是使用keep-alive) // 1前進: 把需要儲存的狀態存到vuex中,在進入頁面時利用vuex儲存的值重新賦值即可 // 2後退: 當返回到上一層時,將vuex中的狀態初始化為預設值。 // 注意: 為避免賦值時變數為undefined,要儲存的狀態預設值必須和元件內的預設值相同 // vue3.0 onBeforeRouteLeave((to, form,next) => { // 前進 if (form.path ==='/newsDetail' && to.path === '/newsDetailCallout') { // 儲存到vuex中 store.commit('setStatus', {selectVal: selectVal.value,newsStatus:newsStatus.value,inputV:inputVal.value}) next() } else { // 後退 if (to.path === '/work' && form.path === '/newsDetail') { // 初始化預設值 store.commit('deleteStatus') next() } } }) onMounted(()=>{ inputVal.value = store.state.inputV newsStatus.value = store.state.newsStatus selectVal.value = store.state.selectVal })