1. 程式人生 > 其它 >vue元件前進狀態快取後退清除狀態

vue元件前進狀態快取後退清除狀態

// 思路:利用元件內的路由守衛(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
})