el-selectデータが多すぎて怠惰にロードされた解決(loadmore)
el-selectデータ過多処理方式
日常のプロジェクトでは、el-selectコンポーネントの使用頻度は非常に高いです。データが多すぎるとレンダリング時間が非常に長いです。ここでいくつかの処理方法を提供します。
リモート検索
コンポーネントはリモート検索方式を提供しています。つまりあなたが入力した結果にマッチするオプションです。
ドロップダウンローディングloadMore
怠惰にロードして、selectが最後までスクロールする時、また一部のデータを要求して、現在のデータに加入します。
あるコンポーネントの中:
問題
このようにレンダリングの問題が解決されたら、次に問題が発生します。つまり、あなたのvalueが選択されたデータの後に、ページ数の大きなデータがあります。
ページ数が小さい時、Ooptionsデータの中に現在のvalueがない場合、valueは取得したidとして表示されます。
選択した後、現在のIDとケーブルを保存します。今度来たら、現在の部品を持ち込んで、マニュアルでoptionsに置いてください。この問題を解決します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
日常のプロジェクトでは、el-selectコンポーネントの使用頻度は非常に高いです。データが多すぎるとレンダリング時間が非常に長いです。ここでいくつかの処理方法を提供します。
リモート検索
コンポーネントはリモート検索方式を提供しています。つまりあなたが入力した結果にマッチするオプションです。
ドロップダウンローディングloadMore
怠惰にロードして、selectが最後までスクロールする時、また一部のデータを要求して、現在のデータに加入します。
あるコンポーネントの中:
<template>
<el-select
v-model="value"
placeholder=" "
filterable
multiple
v-el-select-loadmore="loadmore"
>
<el-option
v-for="item in options"
:key="item.id"
:label="item.label"
:value="item.id">
</el-option>
</el-select>
</template>
export default {
directives: {
'el-select-loadmore': {
bind(el, binding) {
// element-ui scroll
const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
SELECTWRAP_DOM.addEventListener('scroll', function () {
/**
* scrollHeight ( )
* scrollTop , , , , scrollTop 0.
* clientHeight ( )
* , true, false:
* ele.scrollHeight - ele.scrollTop === ele.clientHeight;
*/
const condition = this.scrollHeight - this.scrollTop <= this.clientHeight;
if (condition) {
binding.value();
}
});
}
}
},
data() {
return {
value: '',
options: [],
formData: {
pageIndex: 1,
pageSize: 20,
}
};
},
mounted() {
this.getList(this.formData);
},
methods: {
loadmore() {
this.formData.pageIndex++;
this.getList(this.formData);
},
getList(formData) {
// ,
const _res = [1, 2, 3]; //
this.options = [...this.options, ..._res];
}
}
};
このようにしてローリング怠惰ローディングを行い、具体的な詳細は適用時に修正されます。問題
このようにレンダリングの問題が解決されたら、次に問題が発生します。つまり、あなたのvalueが選択されたデータの後に、ページ数の大きなデータがあります。
ページ数が小さい時、Ooptionsデータの中に現在のvalueがない場合、valueは取得したidとして表示されます。
選択した後、現在のIDとケーブルを保存します。今度来たら、現在の部品を持ち込んで、マニュアルでoptionsに置いてください。この問題を解決します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。