2017-06-19 6 views
0

私は、dataと呼ばれるpropを持つVueコンポーネントを持っています。このデータプロップはバックエンドクエリから最初の25の結果を受け取ります。vue.jsがデータを再レンダリングできないようにしますか?

最終的に我々は〜250件の結果を取得したい場合があり、結果の残りの部分は、ユーザが、少なくともすぐに最初の25件の結果を表示することができます25.

のオフセットこの方法でAJAX呼び出しでフェッチされ適切なSEOを確実にするために、25件の結果を持つ静的に生成されたバックエンドページがあります。

最初の25件の結果がVuexストアに設定されています.AJAX呼び出しが終了したら残りの225件の結果のAJAXデータを既に25件の結果にマージします。

v-forで結果をレンダリングしているときに、最初の25個の結果が残り、最終結果が同じに見えても、データをマージするとリスト全体が再レンダリングされるという問題があります。

データをマージするときにこの再レンダリングが行われないようにする方法はありますか?編集

は、私は単に私の場合のために働くconcatを使用するよりも完全に異なる何かをするようだと、私の値を試してみて、マージするlodash mergeを使用しました。

コンカットの場合、再レンダリングされていないようです。

+1

これで問題は何ですか?いくつかのコードを提供できますか?なぜあなたは 'arr.push(... newElements)'を使わないのですか? Concatは** new **配列を返します。 – Cristy

+1

':key =" item.id "'を 'v-for'と一緒に使って、新しい配列に古いものが含まれていることをvueが認識できるようにしてください。 – Slim

答えて

0

はアンシフト用いて固定し、必要に応じて先頭に追加し、追加するプッシュ:

const offSet = state.currentPage * state.itemsPerPage; 

const start = payload.slice(0, offSet - state.itemsPerPage); 
const end = payload.slice(offSet); 

rootState.filters.data.unshift(...start); 
rootState.filters.data.push(...end); 

これはそのまま配列を残し、それが改ページで動作します。この方法では、Vue.jsで再レンダリングが行われていません

関連する問題