Vue3: el-table の複数選択ボックスがデフォルトで選択されており、ページがめくられて選択状態が維持されます。

問題: el-table の複数選択ボックスがデフォルトで選択されており、ページをめくると、以前に選択したデータが選択されたままになりません。

   <template>
    <el-table
      style="width: 100%"
      border
      :data="state.usersData"
      @selection-change="userSelectionChange"
      ref="multipleTable"
      :row-key="getRowKeys"
    >
      <el-table-column type="selection" width="55" :reserve-selection="true" />
      <el-table-column property="nickName" label="用户名" />
      <el-table-column property="name" label="姓名"  />
      <el-table-column property="mobile" label="手机号"/>
      <el-table-column property="email" label="邮箱"/>
    </el-table>
    <el-pagination
      :current-page="state.paramData.page"
      :page-size="state.paramData.pageSize"
      :page-sizes="[5, 10, 20, 50]"
      layout="total, sizes, prev, pager, next, jumper"
      :background="true"
      :total="state.total"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
    </template>
    <script setup>
const state=reactive({
    
    
   tableData:[],
   selectedData:[],
   paramData:{
    
    
     page:1,
     pageSize:10
      },
    total:0
    })
    //获取表格数据
const getMessage=async ()=>{
    
    
         const {
    
    data}=await getUsers();
         state.tableData=data;
    }
    //用户数据反显(默认选中)
const multipleTable = ref();
const reserveSelection = () => {
    
    
  if (selectData.value.length !== 0) {
    
    
    selectData.value.forEach((item) => {
    
    
      setTimeout(() => {
    
    
        multipleTable.value.toggleRowSelection(item, true); //让页面显示选中的数据
      }, 0);
    });
  }
};
//指定key值,数据更新之后保留之前选中的数据
const getRowKeys = (row) => {
    
    
  return row.userId;
};

const handleCurrentChange = (val) => {
    
    
  state.paramData.page = val;
};
const handleSizeChange = (val) => {
    
    
  state.paramData.pageSize = val;
};
const userSelectionChange = (values) => {
    
    
  state.selectedData = [...values];
};
        
    </script>

手順の概要: 1.
el-table タグに row-key="getRowKeys" を追加します
。 2. el-table-column の最初の行に type="selection" および :reserve-selection="true" を追加します。
el-table の toggleRowSelection メソッド。このメソッドの 2 番目のパラメーターは、選択するために true に設定されます。

: toggleRowSelection メソッドを使用する場合は、非同期操作 (setTimeout または nextTick) で実行する必要があります。これは、データが変更されると、vue の依存関係の監視とビューの更新プロセスが非同期で実行されるため、この時点ではビューの更新タスクがまだ待機しているためです。 . ref を介して dom を操作することは無効です

おすすめ

転載: blog.csdn.net/CYL_2021/article/details/130194387
おすすめ