我有一個search
組件中獲取數據的形式作爲PHP json_encoded
數據的道具:Vue.js合併數據而無需重新渲染?
<search :data="<?= json_encode($jsonHotels) ?>"></search>
這種方式接收到第25部電影馬上當頁面呈現。
之後,我做了一個ajax請求,以獲取剩餘的結果,如果有超過25部電影。
問題是,當我用AJAX調用的數據重寫數據時,組件重新呈現。
此前爲了解決這個問題,我執行了一個偏移量爲25的ajax請求,以跳過前25部電影,只給我額外的結果。把它推到數組上並不會導致重新渲染,而且這個效果很好。
這是完美的,直到我開始思考:
什麼誰啓動或刷新頁面而他們的頁號2-3-4-5-等人。
我現在不僅要弄亂我的偏移量,而且還必須將數據預先添加到我的數組中,並儘可能使用推式附加數據。
有沒有辦法合併數據而不會導致重新渲染?我想知道是否有其他人每次都遇到問題。
僅通過AJAX請求獲取所有結果需要很長時間,顯然也會導致重新呈現。不提取初始後端數據將意味着人們將從空白頁面或微調開始2-3秒。
編輯:
結束了與此:
mergeData(state) {
// Smart merge ajaxData and hotels.
const offSet = state.currentPage * state.itemsPerPage;
const start = state.ajaxData.slice(0, offSet - state.itemsPerPage);
const end = state.ajaxData.slice(offSet);
state.data.unshift(...start);
state.data.push(...end);
},
差不多片我在2陣列並取出currentPage
部分。通過使用unshift
和push
我可以防止發生重新渲染。
你的數據道具沒有綁定到一個變量,所以你如何覆蓋數據?從搜索組件的內部*還是外部? –
發生什麼情況會導致完全相同的數據重新呈現問題? –
我在Vue中有一個過渡組,它在渲染時在我的v-for項目中滑動。與此類似:https://vuejs.org/v2/guide/transitions.html#List-Move-Transitions所以,當我的ajax內容被加載時,它們會在第二次滑動,這對用戶來說是一種混淆,即使它是相同的數據。 –