首页 > 其他分享 >vue elementplus 使用cellRenderer重写单元格,滑动滚动条渲染复选框出现错误

vue elementplus 使用cellRenderer重写单元格,滑动滚动条渲染复选框出现错误

时间:2023-09-18 14:27:24浏览次数:40  
标签:vue checked 单元格 value 复选框 const onChange row

使用elementplus的虚拟表格,动态加载表头的时候,第一列为复选框;但是在滚动滑动条的时候出现了一个奇怪的现象;

我选择了4和5,当我滑动滚动条的时候如下:

 像是复选框跟着在动;

 通过跟踪代码,查出问题;

在cellRenderer中打印checked的值发现问题,大滚动的时候,打印出来的都是undefined,渲染就会出现上面的问题;

解决办法如下:

columns.value.unshift({
      key: 'index',
      title: '#',
      dataKey: 'index',
      width: 80,
      cellRenderer: ({ rowIndex }) => `${rowIndex + 1}`,
    })
    columns.value.unshift({
      key: 'selection',
      dataKey: 'selection',
      width: 50,
      cellRenderer: ({ rowData }) => {
        //必须添加这一句不然出现渲染错误,页面展示的就是复选框选中跟着滚动条一起动
        if (rowData.checked == undefined) rowData.checked = false
        const onChange = (value) => {
          rowData.checked = value
        }
        return h(SelectionCell, { value: rowData.checked, onChange })
      },
      headerCellRenderer: () => {
        const _data = tableData.value
        const onChange = (value) => {
          tableData.value = _data.map((row) => {
            row.checked = value
            return row
          })
        }
        const allSelected = _data.every((row) => row.checked)
        const containsChecked = _data.some((row) => row.checked)
        return h(SelectionCell, {
          value: allSelected,
          intermediate: containsChecked && !allSelected,
          onChange,
        })
      },
    })

// 定义选择列单元格组件 function SelectionCell({ value, indeterminate = false, onChange }) {   return h(ElCheckbox, {     onChange: onChange,     'onUpdate:modelValue': (newValue) => {       onChange(newValue)     },     modelValue: value,     indeterminate: indeterminate,     preventDefault: true,     onClick: (e) => e.stopPropagation(), //阻止冒泡   }) }
 

 

标签:vue,checked,单元格,value,复选框,const,onChange,row
From: https://www.cnblogs.com/wwr01/p/17711729.html

相关文章

  • vue3 浏览器“Uncaught runtime errors:” 全屏报错提示关闭
      在项目的vue.config.js中配置module.exports={devServer:{client:{overlay:false//编译错误时,取消全屏覆盖(建议关掉)}}}......
  • vue2和vue3使用echarts时无数据,怎么显示暂无数据图片或文字
    一开始也经历了用v-if和v-show,v-show的话echarts还会留出暂无数据图片的位置,导致echarts变形,v-if在加载和不加载切换时,dom会获取不到;后来也是在网上找的方法,时间有点长,原文地址就不贴了。对了,在网上查方法的时候还找到了echarts noDataLoading这个方法,按照网上的写完,但是并没有......
  • vue 自定义全局弹窗组件
    问题描述:vue自定义类似elementUI的this.$confirm解决方案:通过vue的extend方法实现然后全局注入 代码实现: 展示的组件(就是最基本的vue组件代码)<!--*@Author:linchunlinchun*@Date:2023-09-1810:14:24*@LastEditors:linchunlinchun*@LastEdit......
  • vue打包后webview加载本地html显示空白页的解决历程
    vue打包后放进androidasserts中webview死活加载不出本地html,一直显示空白,AndroidStudioLogcat也没个啥提示,用浏览器打开却是正常,单独建了html文件放进去也能显示,上火,只好重载webview的事件来获取报错内容:webView.setWebViewClient(newWebViewClient(){@Override......
  • 从零开始使用vue2+element搭建后台管理系统(动态表单实现(含富文本框))[待完善]
    在后台项目的实际开发过程中,涉及到表单的部分通常会使用动态渲染的方案进行实现,由后端接口返回表单配置,前端进行遍历渲染。考虑到通用后台需要具备的功能,除了基础的表单项如输入、下拉、多选、开关、时间、日期等,还需要具备上传、富文本框等功能。首先导入一个百度来的富文本框插......
  • vue项目用electron打包成exe,并更新exe版本
    用electron-build打包1、下载electron、electron-buildernpminstallelectronelectron-builder-D2、配置package.json文件"start":"electron.","app:build":"electron-builder" "build":{"appId":&q......
  • vue+openlayers 绘制点
    绘制点使用point在绘制点的位置,使用Circle绘制点的样式疑问:将style放在Feature上就绘制不出来样式? <template><divclass="setting"><divclass="title">设置</div><ul><li><p>边框大小:&......
  • vue3项目rem自适应大小如何实现
    ❝rem自适应方案只是页面自适应的解决方案之一,本文主要讲解一下实现过程!本文演示的是Vue3语法!❞rem自适应随着现在互联网设备的日益更新,各大尺寸的屏幕参差不穷导致我们的布局在某些小屏或者大屏上与UI的表现并不一致所以,很多人寻求各种解决方案,我们现在的很多移动端框架都是支持......
  • uniapp中使用vue-i18n实现多语言
    一安装vue-i18nnpmivue-i18n@6二添加相关语言配置 如en.json:{"locale.auto":"System","locale.en":"English","locale.zh-hans":"简体中文","locale.zh-hant":"繁体中文","......
  • Vue js 框下制作登录页面的新方法
    ......