2020-12-19解決keep-alive的問題
使用flag的好處
先描述問題,就是需要在首頁和商城來回切換的時候,配飾那個選項不能變,同時重新整理也是。
1.解決重新整理
重新整理的時候,根據當前路由的params來判斷,是否做處理。裡面含有id,說明是當前頁面,就寫個判斷不做任何操作就行。如果是其他頁面進來,這裡又分為兩種情況,第一種是第一次進來,第二種是非第一次進來。
第一次進來可以寫在created裡面,其他的就寫在actived裡面。
問題是:重新整理的時候,created和actived都會執行(這是主要問題,還有其他問題)。然後也不能在actived裡面發請求,反正就很難受,最終目的就是created和actived不能同時執行。
2.解決辦法
就是設定一個flag,開始為true,然後執行created的時候關掉,然後就不會執行actived了,但是為了滿足第二種情況,就是出去再回來的這種情況。需要把flag開啟。所以在deactived裡面開啟。
具體的不太好說,直接看程式碼
data () {
return {
tabs: [],
cateIndex: 0,
leaveindex: 1,
flag: true
}
},
created () {
this.$http.getTabs()
.then(resp => {
this.tabs = resp.list
// 預設跳到第0條資料所對應的路由
// 但是如果是在當前其他資料元件重新整理的時候不跳轉的
const { id } = this.$route.params
if (id) {
// 如果id已存在,說明是在重新整理,那就不跳轉,但是需要修改cateIndex
this.tabs.forEach((tab, index) => {
if (tab.id === parseInt(id)) this.cateIndex = index
})
} else {
// id不存在說明是從別的元件過來的,那就重定向
this.$router.push(`/mall/${this.tabs[0].id}`)
// this.$router.push('/mall/1')
}
})
this.flag = false
},
mounted () {
console.log(this.tabs)
},
updated () {
console.log(this.tabs)
},
beforeRouteLeave (to, from, next) {
// console.log(this.$route.params.id)
this.leaveindex = this.$route.params.id
next()
},
activated () {
if (this.flag) {
// console.log('acmilan')
this.$router.push(`/mall/${this.leaveindex}`)
}
},
deactivated () {
this.flag = true
},
總結
1.重新整理頁面的時候以及第一次進入頁面的時候,created會比actived先執行。(兩個都會執行)但是出去再進來就不會再執行created了,只會執行actived(出去的時候會執行deactived)。
2.通過使用beforRouteleave,來做走之前的傳值(這個值在再一次進來的時候會用到)。
3.created裡面的非同步請求的資料,mounted拿不到,但是updataed可以拿到。
相關文章
- 一勞永逸,解決基於 keep-alive 的後臺多級路由快取問題Keep-Alive路由快取
- 解決 Unexpectedlexicaldeclarationincaseblock的問題BloC
- 解決 github 訪問不了的問題Github
- 解決github訪問慢的問題Github
- display:flex解決的問題Flex
- 遇到問題的解決方法
- 解決JS跨域訪問的問題JS跨域
- but no encoding declared;問題的解決方法Encoding
- 01揹包問題的解決
- 黑蘋果的問題解決蘋果
- 提升解決問題能力的思考
- JAR衝突問題的解決JAR
- 提問題比解決問題更重要
- 解決跨域問題跨域
- SERVICE問題解決方法
- 解決mapper重名問題APP
- qeephp 解決跨越問題PHP
- 解決高度塌陷問題
- 解決訪問Github與clone很慢的問題Github
- 解決訪問 GitHub 與 clone 很慢的問題Github
- 如何解決sms-activate的解決問題
- 怎樣成為解決問題的高手?——關於問題解決的關鍵4步驟
- 幽默:程式設計中困難的不是解決問題,而是確定要解決的問題 - Paul程式設計
- 解決bash: mysql: command not found的問題MySql
- IPython的安裝及問題解決Python
- 解決無法使用VI的問題
- VSCode除錯Flutter的問題解決VSCode除錯Flutter
- Mycat分片方案需要解決的問題
- 玩Deno遇到問題的解決方案
- 解決pod install update很慢的問題
- 解決AI的小資料問題AI
- 如何訓練解決問題的能力?
- @AllArgsConstructor與@Value共用的問題解決Struct
- 解決 ngrok 的 Domain 錯誤問題AI
- redis中大key問題的解決思路Redis
- 關於Failed to resolve的問題解決AI
- SSH登入很慢問題的解決
- pika.exceptions.ConnectionClosed 問題的解決Exception