当前位置: 首页 > 知识库问答 >
问题:

javascript - el-table 用span-method合并行如何只在初次渲染时调用?

龙德义
2024-06-13

el-table 用span-method合并行,表格中有一列数据是用户输入的,表格已经渲染完成,但是每次输入数据的时候,都会执行span-method,重新计算合并逻辑,有什么办法能只在初次渲染时执行span-method,后面输入数据不执行span-method

<template>  <div>    <el-table      :data="tableData"      :span-method="objectSpanMethod"      border      style="width: 100%; margin-top: 20px"    >      <el-table-column prop="id" label="ID" width="180" />      <el-table-column prop="name" label="Name" />      <el-table-column prop="amount1" label="Amount 1" />      <el-table-column prop="amount2" label="Amount 2" />      <el-table-column prop="amount3" label="Amount 3" >      <template #default="scope">        <el-input          v-model="scope.row.inputVal"        ></el-input>      </template>      </el-table-column>    </el-table>  </div></template><script lang="ts" setup>import type { TableColumnCtx } from 'element-plus'interface User {  id: string  name: string  amount1: string  amount2: string  amount3: string}interface SpanMethodProps {  row: User  column: TableColumnCtx<User>  rowIndex: number  columnIndex: number}const objectSpanMethod = ({  row,  column,  rowIndex,  columnIndex,}: SpanMethodProps) => {  console.log('触发 objectSpanMethod')  if (columnIndex === 0) {    if (rowIndex % 2 === 0) {      return {        rowspan: 2,        colspan: 1,      }    } else {      return {        rowspan: 0,        colspan: 0,      }    }  }}const tableData: User[] = [  {    id: '12987122',    name: 'Tom',    amount1: '234',    amount2: '3.2',    amount3: '',  },  {    id: '12987123',    name: 'Tom',    amount1: '165',    amount2: '4.43',    amount3: '',  },  {    id: '12987124',    name: 'Tom',    amount1: '324',    amount2: '1.9',    amount3: '',  },  {    id: '12987125',    name: 'Tom',    amount1: '621',    amount2: '2.2',    amount3: '',  },  {    id: '12987126',    name: 'Tom',    amount1: '539',    amount2: '4.1',    amount3: '',  },]</script>

以上是个例子,可以打开下面演示地址试试,打开控制台,可以看到每次填数据都会输出
演示地址

共有1个答案

计均
2024-06-13

没办法什么好办法,因为你要驱动视图渲染。

除非你改成非受控的输入框,或者把 el-input 绑定的值从 scope.row.input 改成其他的一个新变量。但是最终你都要去更新总计栏中的值,或者需要额外收集用户收入的新数据。

所以不如旧直接给 span-method 套一个 debounce/throttle 延迟执行就好了。

 类似资料:
  • el-table 如何根据表格数据合并行。 如图所示,name列的值一样,就合并成一行;Amount 1列合并成3行 演示地址

  • 请问这样的数据在el-table里如何渲染出来,activityList也要渲染 id activityList 1 test1(2),test2(3) 这样的数据应该如何去渲染 还是处理一下rows里面的activityList这个数据?

  • 在线demo: https://codesandbox.io/s/el-table-he-bing-xing-de-hover-wen-t... 效果1:鼠标悬停在第一行的时候,跟悬停第二行一样,只高亮右侧(或者每一行都高亮合并行) 效果2:鼠标悬停在合并行的时候,触发所有行的高亮

  • 前言 在游戏开发中,Draw call 作为一个非常重要的性能指标,直接影响游戏的整体性能表现。Draw call 就是 CPU 调用图形 API,比如 OpenGL,命令 GPU 进行图形绘制。一次 Draw call 就代表一次图形绘制命令,由于 Draw call 带来的 CPU 及 GPU 的渲染状态切换消耗,往往需要通过批次合并来降低 Draw call 的调用次数。批次合并的本质就是在

  • 问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类在单击文本时都再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每次

  • 问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只能渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类都在单击文本时再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每