場景:分頁
父組件通過axios取到后端laravel的數(shù)據(jù)flightdata,flightdata中包含一個(gè)總頁數(shù)total,每頁顯示數(shù)據(jù)條數(shù)per_page
父組件:向子組件pager傳page、last 和 path,last是通過total/per_page向上取整計(jì)算出來的,問題就出在它上面
<template>
<div>
...
<pager :current="page" :last="last" :path="path"></pager>
</div>
</template>
<script>
...
export default {
//路由傳過來的當(dāng)前頁
props: ['page'],
data () {
return {
flightsData: '',
path: 'today',
//last: 999,
last: '',
api: '/notice_today/all'
}
},
created () {
this.getData()
},
watch: {
'$route' (to, from) {
this.getData()
}
},
methods: {
getData () {
this.axios({
method: 'get',
baseURL: '/api',
url: this.api,
params: {page: this.page},
timeout: 500,
withCredentials: true
}).then(response => {
this.flightsData = response.data
this.last = Math.ceil(this.flightsData.total / this.flightsData.per_page)
})
}
},
...
}
</script>
子組件:
<template>
...
//遍歷pagerArray生成頁碼
...
//觀察父組件傳過來的值
{{ current }}
{{ last }}
{{ _last }}
{{ path }}
</template>
<script>
export default {
props: {
current: { default: 1 },
last: { required: true },
path: { required: true }
},
data () {
return {
pagerArray: [],
_last: ''
}
}
mounted () {
this.pagerRender()
},
watch: {
'$route' (to, from) {
this.pagerRender()
}
},
methods: {
pagerRender () {
//this.last 要參與計(jì)算
this._last = this.last
}
}
}
</script>
發(fā)現(xiàn)問題:
子組件的pagerRender()方法要用到父組件傳給子組件的值last
但是父組件卻不能第一時(shí)間把last最新的值傳給子組件:
我將父組件的last賦一個(gè)值99,父組件應(yīng)該在created階段通過getData()方法給last賦成真實(shí)頁數(shù)的值,比如5
我子組件中的created階段通過pagerRender()方法將last的值賦給_last,按理來說,最后{{ last }}和{{ _last }}都該是真實(shí)頁數(shù)5,但是第一時(shí)間打開頁面時(shí) {{ _last }}的值其實(shí)是99,{{ last }}值為5,難道last的值傳進(jìn)子組件兩次?!
改變頁數(shù)(點(diǎn)擊上下頁)后{{ _last }}才開始和{{ last }}同步,就是說第一次渲染頁面的時(shí)候last的最新值沒有第一時(shí)間傳到子組件
但是同時(shí) {{ current }} 和 {{ _current }}的值都是對的
我覺得我對生命周期理解出了什么問題,但是確實(shí)找不到原因
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。