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

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 延迟执行就好了。

 类似资料:
  • 在线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和嵌入式代码段: 问题答案: 每

  • 问题内容: 我正在构建一个PhotoViewer,当用户向左或向右按​​下时可以更改照片。我正在使用React,Redux,react-router和react- router- redux。当用户按下向左或向右按钮时,我会做两件事,我使用来更新网址,并调度一个操作来更新当前查看的照片。我正在订阅状态更改以进行调试。 以上每一行都会触发新的状态更改。因为我更新了,所以分派操作会更新存储,而更新UR

  • 问题内容: 我从以下代码调用函数: 我的功能是 我怎么只能拨打一次ajax电话?所以当内容被加载并且页面不被拒绝时不加载ajax吗?我尝试做布尔变量,但什么也没做,我支持这是因为我调用了everytime函数。请给我一个想法。 谢谢 问题答案: 当您想对该事件做某事时。 确定何时已加载数据。 或在您想一次调用时使用。 参考

  • 问题内容: 我知道我可以在渲染组件时通过。我也知道这种方法。但是问题是,由于我的组件不知道它的初始状态,并没有太大帮助。我做。所以我想在渲染时通过它。 这样的东西(伪代码): 我知道我可以使用a 作为初始状态,但这闻起来像是反模式。 我该怎么办? 编辑清晰度 想象一下我有一个组件。到我第一次渲染它时,初始状态对应于数据库中当前注释的快照。当用户包含评论时,此列表将更改,这就是为什么它应该是a 而不

  • 问题内容: 渲染模板后如何运行方法?我要设置和之后,我需要使用JQuery进行更改(例如,在模板内容的DOM中)。正在“之前”渲染工作(模板的DOM尚不可用)。谢谢。 问题答案: 创建在链接函数中运行代码的指令。构建模板后,将调用链接功能。 请参阅ng-click以获取想法。