const { dataList, inputValue } = this.data 什么意思
时间: 2024-03-30 19:34:59 浏览: 140
这是 JavaScript 中的解构赋值语法,它可以将对象中的属性值或数组中的元素值,赋值给对应的变量。在这个代码片段中,{ dataList, inputValue } 表示从 this.data 对象中取出 dataList 和 inputValue 两个属性值,然后分别赋值给 dataList 和 inputValue 两个变量。这样做可以简化代码,使得变量的命名更加直观。
相关问题
优化这段代码 search() { if (this.inputValue == '') { uni.showToast({ title: '搜索内容不能为空', icon: 'none' }); } else { let params = { paramsName: this.inputValue } // 商品查询 this.$u.api.findFoodstuffList(params).then(res => { if (res.list.length > 0) { this.goodsList = res.list } else { this.goodsList = [] } }) this.$u.api.findComboList(params).then(res => { if (res.list.length > 0) { this.comboList = res.list } else { this.comboList = [] } }) // 拼接(全部) this.dataList = this.goodsList.concat(this.comboList); if(this.dataList.length==""){ uni.showToast({ icon: 'none', title: '没有搜到哟,换个词试试' }) } // 搜索词列表 if (!this.searchHistoryList.includes(this.inputValue)) { this.searchHistoryList.unshift(this.inputValue);//给数组的开头添加元素, uni.setStorage({ key: 'searchList', data: JSON.stringify(this.searchHistoryList) }); } else { //有搜索记录,删除之前的旧记录,将新搜索值重新push到数组首位 let i = this.searchHistoryList.indexOf(this.inputValue); this.searchHistoryList.splice(i, 1); this.searchHistoryList.unshift(this.inputValue); uni.setStorage({ key: 'searchList', data: JSON.stringify(this.searchHistoryList) }); } } },
为了优化这段代码,你可以使用async/await方法改写它,如下所示:
async search() {
if (this.inputValue == '') {
uni.showToast({ title: '搜索内容不能为空', icon: 'none' });
} else {
let params = { paramsName: this.inputValue };
try {
const res1 = await this.$u.api.findFoodstuffList(params);
this.goodsList = res1.list.length > 0 ? res1.list : [];
const res2 = await this.$u.api.findComboList(params);
this.comboList = res2.list.length > 0 ? res2.list : [];
this.dataList = this.goodsList.concat(this.comboList);
if (this.dataList.length == "") {
uni.showToast({ icon: 'none', title: '没有搜到哟,换个词试试' });
}
if (!this.searchHistoryList.includes(this.inputValue)) {
this.searchHistoryList.unshift(this.inputValue);
await uni.setStorage({ key: 'searchList', data: JSON.stringify(this.searchHistoryList) });
} else {
let i = this.searchHistoryList.indexOf(this.inputValue);
this.searchHistoryList.splice(i, 1);
this.searchHistoryList.unshift(this.inputValue);
await uni.setStorage({ key: 'searchList', data: JSON.stringify(this.searchHistoryList) });
}
} catch (error) {
console.log(error);
}
}
}
该方法可以使代码更加简洁易懂,同时也可以减少代码中的回调地狱。
在前端页面中 默认生成了数据如下<template> <div class="content"> <div class="row"> <div class="list"> <ul> <li>序号</li> <li>权限</li> <li>角色</li> <li>账号</li> <li>编辑</li> </ul> </div> </div> <div class="row"> <div class="lists"> <ul v-for="item in dataList" :key="item.id"> <li>{{ item.userid }}</li> <li>{{ item.authority }}</li> <li>{{ item.role }}</li> <li>{{ item.username }}</li> <li @click="edit(item)">编辑</li> </ul> </div> </div> </div> </template> <script setup> import { ref, onMounted } from "vue"; import { getList,update} from "@/api/user"; const dataList = ref([]); onMounted(async () => { try { const response = await getList(); dataList.value = response.data; } catch (error) { console.error(error); } }); </script> 如何实现增加一个弹窗表单对数据修改并且不改变id,
要实现添加一个弹窗表单对数据进行修改,你需要进行以下步骤:
1. 在模板中添加一个按钮,用于触发弹窗的显示:
```html
<button @click="showEditModal = true">编辑</button>
```
2. 定义一个响应式变量 `showEditModal`,用于控制弹窗的显示:
```javascript
const showEditModal = ref(false);
```
3. 定义一个响应式变量 `formData`,用于存储表单数据:
```javascript
const formData = ref({});
```
4. 定义一个方法 `edit()`,用于处理编辑操作,该方法会将选中的数据赋值给 `formData`:
```javascript
const edit = (item) => {
formData.value = { ...item };
showEditModal.value = true;
};
```
5. 在模板中添加一个 `<Modal>` 组件,用于显示弹窗。该组件应当包含一个表单,表单的输入框应当绑定到 `formData` 上:
```html
<Modal v-model:visible="showEditModal">
<form>
<label>权限</label>
<input v-model="formData.authority" type="text"><br>
<label>角色</label>
<input v-model="formData.role" type="text"><br>
<label>账号</label>
<input v-model="formData.username" type="text"><br>
<button @click="updateData">保存</button>
</form>
</Modal>
```
6. 定义一个方法 `updateData()`,用于提交表单数据并更新数据列表。该方法应当调用 `update()` 方法提交数据,并在提交成功后更新 `dataList`:
```javascript
const updateData = async () => {
try {
await update(formData.value);
const response = await getList();
dataList.value = response.data;
showEditModal.value = false;
} catch (error) {
console.error(error);
}
};
```
通过以上步骤,你就可以实现增加一个弹窗表单对数据修改并且不改变id的功能。当用户点击某一行数据的编辑按钮时,会弹出一个表单,表单中已经填充了该行数据的原始值。用户可以修改表单中的数据并保存,保存后会将修改后的数据提交到后端,然后重新获取数据列表并更新页面。
阅读全文