我们在做一些数据查询的时候,往往会有重置按钮,这个时候,如何把数据快速重置回初始数据就是一个问题了。
对于前端初学者来说,大部分人会选择把data里的数据重新赋值一遍,如:
- export default {
- data() {
- return {
- listQuery: {
- name: undefined,
- sex: 1,
- mobile: null,
- age: undefined,
- type: "",
- },
- };
- },
- methods: {
- handleReset() {
- this.listQuery = {
- name: undefined,
- sex: 1,
- mobile: null,
- age: undefined,
- type: "",
- };
- },
- },
- };
这么做并不是什么好的选择,因为如果查询字段过多,就会显得代码很冗余。
vue2中我们可以使用一种依赖于选项 API 内部的解决方法$options
- export default {
- data() {
- return {
- listQuery: {
- name: undefined,
- sex: 1,
- mobile: null,
- age: undefined,
- type: "",
- },
- };
- },
- methods: {
- handleReset() {
- Object.assign(this.listQuery, this.$options.data().listQuery);
- },
- },
- };
短短的一行代码就实现了数据重置,更不用关注listQuery里有多少字段,优雅而便捷。
vue3我们更倾向于使用组合式API,而不是在vue3里继续使用vue2的选项式API语法;所以vue2中$options就没法直接使用了。我们在这里推荐一种可重用函数的写法,也十分实用。
- import { reactive } from "vue";
- //定义可重用函数和初始数据
- const originData = () => ({ name: "", age: "" });
- //赋值
- const listQuery = reactive(originData());
- listQuery.name = "皮卡丘";
- listQuery.age = 10;
- //数据重置
- const handleReset = () => {
- Object.assign(listQuery, originData());
- };
可重用函数既可以用来定义初始数据,也可以用来重置数据,是不是也显得很优雅。
大家赶快在项目里运用起来吧~