如何让vuejs在大数据集上使用v-model时响应更快
How to make vuejs respond faster when using v-model on large data sets
我正在处理的应用程序呈现了一组人及其 children。阵列中大约有600人。我在文本输入中显示人名和每个人的 children 的名字,以便可以对其进行编辑。我使用 V-model
进行双向绑定,这样我就可以轻松保存编辑内容。
<tr v-for="person in persons">
<td>
<input type="text" v-model="person.name" />
</td>
<td v-for="child in person.children">
<input type="text" v-model="child.name" />
</td>
</tr>
问题是当我开始在文本框中输入时,有一个延迟,我必须等待几秒钟才能显示我输入的内容。
当我使用 v-bind:value
或当我将来自 api 的人数减少为 50 人时,这不会发生。我可以使用分页,但我的老板想要一次显示所有结果。
我的问题是,如何使 vue.js
在对大数据使用双向绑定时执行得更快?
当你处理一堆数据时,集成分页总是一个好主意,但有时它不是一个选项。
有一个名为 .lazy
的修饰符存在于 v-model
directive.What 它确实是在更改事件后与数据模型同步输入。
用法很简单:
<input v-model.lazy="msg" >
我也遇到过类似的问题,使用v-model.lazy 没有解决。它的性能稍好一些,但不如手动执行。
所以代替:
<input v-model.lazy="msg">
我用过:
<input :value="msg" @change="v => msg = v">
理论上它几乎是一样的,但在实践中我发现它更快(至少在 Bootstrap-vue 中的 <b-form-input>
上使用它)
作为对 Arrakis 的回应,v-model.lazy 不适合您,因为您在自定义组件(bootstrap 表单输入组件)和 v-[=12= 上使用它] 不适用于自定义组件。
我正在处理的应用程序呈现了一组人及其 children。阵列中大约有600人。我在文本输入中显示人名和每个人的 children 的名字,以便可以对其进行编辑。我使用 V-model
进行双向绑定,这样我就可以轻松保存编辑内容。
<tr v-for="person in persons">
<td>
<input type="text" v-model="person.name" />
</td>
<td v-for="child in person.children">
<input type="text" v-model="child.name" />
</td>
</tr>
问题是当我开始在文本框中输入时,有一个延迟,我必须等待几秒钟才能显示我输入的内容。
当我使用 v-bind:value
或当我将来自 api 的人数减少为 50 人时,这不会发生。我可以使用分页,但我的老板想要一次显示所有结果。
我的问题是,如何使 vue.js
在对大数据使用双向绑定时执行得更快?
当你处理一堆数据时,集成分页总是一个好主意,但有时它不是一个选项。
有一个名为 .lazy
的修饰符存在于 v-model
directive.What 它确实是在更改事件后与数据模型同步输入。
用法很简单:
<input v-model.lazy="msg" >
我也遇到过类似的问题,使用v-model.lazy 没有解决。它的性能稍好一些,但不如手动执行。
所以代替:
<input v-model.lazy="msg">
我用过:
<input :value="msg" @change="v => msg = v">
理论上它几乎是一样的,但在实践中我发现它更快(至少在 Bootstrap-vue 中的 <b-form-input>
上使用它)
作为对 Arrakis 的回应,v-model.lazy 不适合您,因为您在自定义组件(bootstrap 表单输入组件)和 v-[=12= 上使用它] 不适用于自定义组件。