欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2025年02月19日 09:54:08   作者:肖肖肖麗珠  
在使用reactive定義的變量時,直接賦值會失去響應(yīng)式,為了清空?filters并確保響應(yīng)式,可以使用Object.assign({},?filters)或者遍歷對象逐個清除屬性,本文介紹vue3中reactive的對象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了),感興趣的朋友一起看看吧

let filters = reactive({
  status:''
});

我想清空filters的內(nèi)容。給接口傳參的時候保證filters是個空對象。

所以使用filters={}。

頁面上的確清空了。但是發(fā)現(xiàn)賦值一直沒辦法成功。我明明有下拉。點(diǎn)擊某個下拉選項(xiàng)確一直選不中。沒辦法回填了。

因?yàn)閞eactive定義的變量重新賦值相當(dāng)于重新創(chuàng)建了一個新的變量,就會失去響應(yīng)式。

看網(wǎng)上寫法還有Object.assign({},filters)。這樣的頁面上的兩個filters的確也清空了。但是如果我在js里面新增了別的filters并沒有綁定到dom上。比如我還想有個參數(shù)filters.name。那樣使用Object.assign({},filters)。實(shí)際上是清楚不掉這個name的值的。

還是一個個循環(huán)清除對象吧

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="請輸入機(jī)構(gòu)"
            @select="handleSelect"
          />
        </el-form-item>
      <el-form-item label="" prop="status">
        <el-select
          v-model="filters.status"
          placeholder="請選擇啟用狀態(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} };//這里后端希望如果沒有搜索條件就傳個空對象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={} 這里會導(dǎo)致頁面失去響應(yīng)式。清除內(nèi)容后再去回填選擇不上的問題
  clearFilters(filters)  //使用這個才正確
  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的對象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了)的文章就介紹到這了,更多相關(guān)vue3 reactive賦值問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論