vue緩存的keepalive頁面刷新數(shù)據(jù)的方法
用到這個的業(yè)務(wù)場景是這樣的:
a頁面點(diǎn)擊新建列表按鈕進(jìn)入到新建的頁面b,填寫b頁面并點(diǎn)擊b頁面確認(rèn)添加按鈕,把這些數(shù)據(jù)帶到a頁面,填充到列表(數(shù)組),可以添加多條,
點(diǎn)擊這條的時候進(jìn)入到編輯頁面,確認(rèn)修改之后,回退到a頁面,a頁面需要更新這條數(shù)據(jù)
實(shí)現(xiàn)這個功能的時候,由于是路由頁面之間的跳轉(zhuǎn),首先想到的方案有幾個:1. 用sessionStorage本地存儲;2. 用路由參數(shù)帶過去;3. 用兄弟組件傳值
由于是添加完之后如果按回退是需要退出整個頁面,如果用路由跳轉(zhuǎn),會出現(xiàn)回退到編輯頁面了,所以這個方法首先排除
用本地存儲的時候,如果不加回退也會吧之前存的歷史記錄給帶過來,所以最終選用了第三種方法
由于a頁面需要緩存,所以用到了路由頁面的緩存
router.js
{path: '/a',name: 'a',component: a,meta: {keepAlive: true}},
App.vue
<template>
<div id="app">
<keep-alive>
<router-view v-if="$routemetakeepAlive"></router-view>
</keep-alive>
<router-view v-if="!$routemetakeepAlive"></router-view>
</div>
</template>
由于用到了keepalive, 所以頁面在再次加載的時候是不會觸發(fā)created而是會觸發(fā)activated的
所以接收數(shù)據(jù),重置數(shù)據(jù)要寫到activated方法下
a頁面接收
更改用Vue.set()方法
調(diào)用方法:Vue.set( target, key, value )
target:要更改的數(shù)據(jù)源(可以是對象或者數(shù)組)
key:要更改的具體數(shù)據(jù)
value :重新賦的值
activated(){
let that = this
Self$on('detailShow',(data)=>{ // 接收
if(!dataisEdit){ // 是新增還是編輯--這個是在跳轉(zhuǎn)的時候帶過去的--新增/編輯頁面也會根據(jù)這個顯示內(nèi)容有所區(qū)別
thataddParamspush(data)
thataddParams = Arrayfrom(new Set(thataddParamsSubsidyInfos)) // 為避免重復(fù)去個重
}else{
// thataddParams[thateditIndex] = data // 剛開始想通過直接修改,后來發(fā)現(xiàn)不行,因?yàn)轫撁媸怯芯彺娴?,顯示的還是未修改之前的
Vueset(thataddParams,thateditIndex,data) // 用set方法修改數(shù)據(jù)
}
})
},
b頁面提交(新增/編輯)
submit(){
if(!thisdetailValidate()){ // 這個是表單校驗(yàn),如果不通過不然提交
return;
}else{
Self$emit('detailShow',thisaddParams) // 事件分發(fā)
this$routerback();
}
}
vue 緩存的keepalive頁面刷新數(shù)據(jù)的話,這個主要還是用到了Vue.set( target, key, value )方法
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue3+vite多項(xiàng)目多模塊打包(基于vite-plugin-html插件)
這篇文章主要給大家介紹了關(guān)于vue3+vite基于vite-plugin-html插件實(shí)現(xiàn)多項(xiàng)目多模塊打包的相關(guān)資料,現(xiàn)在很多小伙伴都已經(jīng)使用Vite+Vue3開發(fā)項(xiàng)目了,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
vue運(yùn)行報(bào)錯cache-loader的解決步驟
最近運(yùn)行vue項(xiàng)目的時候報(bào)錯了,通過查找相關(guān)資料最終解決,下面這篇文章主要給大家介紹了關(guān)于vue運(yùn)行報(bào)錯cache-loader的解決步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
使用vue-route 的 beforeEach 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗(yàn)證登錄)功能
在網(wǎng)站中普遍會遇到這樣的需求,路由跳轉(zhuǎn)前做一些驗(yàn)證,比如登錄驗(yàn)證(未登錄去登錄頁)。下面腳本之家小編給大家?guī)砹耸褂胿ue-route 的 beforeEach 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗(yàn)證登錄)功能,感興趣的朋友一起看看吧2018-03-03
Vue登錄后添加動態(tài)路由并跳轉(zhuǎn)的實(shí)踐分享
這篇文章講給大家詳細(xì)介紹一下Vue如何實(shí)現(xiàn)登錄后添加動態(tài)路由并跳轉(zhuǎn),文章通過代碼示例介紹的非常詳細(xì),對我們的學(xué)習(xí)或工作有一定的的幫助,需要的朋友可以參考下2023-07-07
el-table?fixed固定列導(dǎo)致錯位的解決方法介紹
ElementUI中el-table設(shè)置指定列固定不動,不受滾動條影響,下面這篇文章主要給大家介紹了關(guān)于el-table?fixed固定列導(dǎo)致錯位的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11

