vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了)

let filters = reactive({
status:''
});我想清空filters的內(nèi)容。給接口傳參的時(shí)候保證filters是個(gè)空對(duì)象。
所以使用filters={}。
頁(yè)面上的確清空了。但是發(fā)現(xiàn)賦值一直沒辦法成功。我明明有下拉。點(diǎn)擊某個(gè)下拉選項(xiàng)確一直選不中。沒辦法回填了。
因?yàn)閞eactive定義的變量重新賦值相當(dāng)于重新創(chuàng)建了一個(gè)新的變量,就會(huì)失去響應(yīng)式。
看網(wǎng)上寫法還有Object.assign({},filters)。這樣的頁(yè)面上的兩個(gè)filters的確也清空了。但是如果我在js里面新增了別的filters并沒有綁定到dom上。比如我還想有個(gè)參數(shù)filters.name。那樣使用Object.assign({},filters)。實(shí)際上是清楚不掉這個(gè)name的值的。
還是一個(gè)個(gè)循環(huán)清除對(duì)象吧
const clearFilters(filters) {
for (const key in filters) {
if (filters.hasOwnProperty(key)) {
delete filters[key];
}
}
}調(diào)用clearFilters(filters)
<el-form ref="formRef" :inline="true" :model="filters" class="card table-search">
<div class="search-title">{{ route.name }}</div>
<div class="search_content">
<div class="searchCol">
<el-form-item label="" prop="orgName">
<el-autocomplete
v-model="filters.orgName"
:trigger-on-focus="false"
value-key="orgName"
:fetch-suggestions="querySearch"
clearable
class="inline-input w-50"
placeholder="請(qǐng)輸入機(jī)構(gòu)"
@select="handleSelect"
/>
</el-form-item>
<el-form-item label="" prop="status">
<el-select
v-model="filters.status"
placeholder="請(qǐng)選擇啟用狀態(tài)"
style="width: 240px"
clearable
>
<el-option :value="0" label="啟用"></el-option>
<el-option :value="1" label="停用"></el-option>
</el-select>
</el-form-item>
</div>
<div class="search_btn">
<el-form-item class="operation">
<el-button type="primary" @click="search"> 查詢</el-button>
<el-button @click="reset"> 清空</el-button>
</el-form-item>
</div>
</div>
</el-form>let filters = reactive({});
const formRef = ref();
const allOrgs=ref([
{orgName:'機(jī)構(gòu)1',orgCode:'1'},
{orgName:'機(jī)構(gòu)2',orgCode:'2'},
{orgName:'機(jī)構(gòu)3',orgCode:'3'}
])
const querySearch = (queryString: string, cb: any) => {
const results = queryString ? allOrgs.value.filter(createFilter(queryString)) : allOrgs.value;
cb(results);
};
const createFilter = (queryString: string) => {
return (thisOrg) => {
return thisOrg.orgName.indexOf(queryString) != -1;
};
};
const handleSelect = (item) => {
filters.orgCode = item.orgCode;
};
//訪問接口
const getTableList = () => {
let param= {param:{...filters} };//這里后端希望如果沒有搜索條件就傳個(gè)空對(duì)象param:{}這樣的格式。
regionPage(newParams);
};
const search = () => {
if(filters.orgName==""){
delete filters.orgName;
delete filters.orgCode;
}
if(filters.status===""){
delete filters.status;
}
getTableList();
};
const reset = () => {
//Object.assign({},filters) 這里可能導(dǎo)致filters.orgCode沒有清除掉
// filters={} 這里會(huì)導(dǎo)致頁(yè)面失去響應(yīng)式。清除內(nèi)容后再去回填選擇不上的問題
clearFilters(filters) //使用這個(gè)才正確
console.log("filters",filters)
formRef.value.resetFields();
getTableList();
};
const clearFilters(filters) {
for (const key in filters) {
if (filters.hasOwnProperty(key)) {
delete filters[key];
}
}
}到此這篇關(guān)于vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了)的文章就介紹到這了,更多相關(guān)vue3 reactive賦值問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue.js實(shí)現(xiàn)輸入框清空功能的兩種方式
- vue前端更新后需要清空緩存代碼示例
- vue3清空reactive的四種方式
- Vue3如何清空Reactive定義的數(shù)組
- vue中el-date-picker type=daterange日期清空時(shí)不回顯的解決
- vue返回首頁(yè)后如何清空路由問題
- ant design vue 清空upload組件圖片緩存的問題
- vue如何實(shí)現(xiàn)清空this.$route.query的值
- vue清空form對(duì)象的方法
- vue3清空l(shuí)et?arr?=?reactive([])的實(shí)現(xiàn)示例
相關(guān)文章
Vue.js系列之項(xiàng)目結(jié)構(gòu)說明(2)
這篇文章主要介紹了Vue.js系列之項(xiàng)目結(jié)構(gòu)說明(2)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
Vue input輸入框回車以后自動(dòng)刷新頁(yè)面(直播程序)
這篇文章主要介紹了直播程序,Vue input輸入框回車以后自動(dòng)刷新頁(yè)面,適用場(chǎng)景是在輸入框輸入字符并按下回車鍵搜索時(shí),刷新頁(yè)面,需要的朋友參考下實(shí)現(xiàn)代碼2023-01-01
Vue上傳組件vue Simple Uploader的用法示例
本篇文章主要介紹了Vue上傳組件vue Simple Uploader的用法示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-08-08
vue項(xiàng)目使用axios封裝request請(qǐng)求的過程
這篇文章主要介紹了vue項(xiàng)目使用axios封裝request請(qǐng)求,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
vue quill editor 使用富文本添加上傳音頻功能
vue-quill-editor 是vue項(xiàng)目中常用的富文本插件,其功能能滿足大部分的項(xiàng)目需求。這篇文章主要介紹了vue-quill-editor 富文本添加上傳音頻功能,需要的朋友可以參考下2020-01-01

