ViewUi的render

简介: ViewUi的render

需要:我们想要在table组件里面自定义一些内容,

比如select / switch 等等,就需要用到render这个函数

先看一下官网提供的例子:

      columns1: [
        {
          title: "Name",
          key: "name",
        },
        {
          title: "Age",
          key: "age",
        },
        {
          title: "Address",
          key: "address",

          render: (h, params) => {
            console.log(params);
            return h("i-switch", {
              props: {
                type: "radio",
                value: params.row.checked,
              },

              nativeOn: {
                click: () => {
                  this.initData();
                  console.log(123);
                },
              },
            });
          },
        },
      ],

复制代码
在表头里面直接render出来结构,写法比较奇葩,参考vue的render

https://cn.vuejs.org/v2/guide/render-function.html

效果图如下:

就可以看到我们自定义的组件switch了,

注意如果绑定的是一些第三方组件(ivewUI),

绑定事件需要 用nativeOn

两个参数:h类似于creatDom,params就是这一列的数据

包括column ,index,raw

当我们觉得恶心(render写法)且大功告成的时候,

发现render写法更恶心的地方!

视图无法更新

举例:我们开关的按钮需要调接口,然后不论请求成功或失败,

都需要再去获取一次最新的数据,来更新我们的视图。

用render的写法就会导致,数据源变了,视图却无法更新的问题。

参考了一些文档,发现可以用slot来替代render,解决我们问题的同时,

也让我们的写法更优雅了,写法如下:

    <i-table :columns="columns1" :data="data1">
      <!-- switch slot -->
      <template slot-scope="{ row, index }" slot="switchSlot">
        <i-switch v-model="row.checked" @on-change="initData"></i-switch>
      </template>
    </i-table>

复制代码
注意slot需要声明在table里面,不然报错

然后,再定义表头的columns1来引用slot 即可完成。

      columns1: [
        {
          title: "Name",
          key: "name",
        },
        {
          title: "Age",
          key: "age",
        },
        {
          title: "Address",
          key: "address",
          slot: "switchSlot",
          // render: (h, params) => {
          //   console.log(params);
          //   return h("i-switch", {
          //     props: {
          //       type: "radio",
          //       value: params.row.checked,
          //     },

          //     nativeOn: {
          //       click: () => {
          //         this.initData();
          //         console.log(123);
          //       },
          //     },
          //   });
          // },
        },
      ],

复制代码
代码注释了render的写法

相关参考文档:https://run.iviewui.com/8NNVisgQ

最后不得不说,iview真的坑,render写法真的恶心。。

作者: Bill 本文地址: http://biaoblog.cn/info?id=1625625191946

版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!

相关文章
|
JavaScript 前端开发
Ant Design Vue 从V3到V4的升级原来进行了这个技术的调整
Ant Design Vue 从V3到V4的升级原来进行了这个技术的调整,你有了解吗?
1154 0
|
安全 Linux 网络安全
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
|
Java Spring
Springboot starter开发之traceId请求日志链路追踪
能标识一次请求的完整流程,包括日志打印、响应标识等,以便于出现问题可以快速定位并解决问题。
2229 0
Springboot starter开发之traceId请求日志链路追踪
|
前端开发 JavaScript 容器
在 vite+vue 中使用@originjs/vite-plugin-federation 模块联邦
【10月更文挑战第25天】模块联邦是一种强大的技术,它允许将不同的微前端模块组合在一起,形成一个统一的应用。在 vite+vue 项目中,使用@originjs/vite-plugin-federation 模块联邦可以实现高效的模块共享和组合。通过本文的介绍,相信你已经了解了如何在 vite+vue 项目中使用@originjs/vite-plugin-federation 模块联邦,包括安装、配置和使用等方面。在实际开发中,你可以根据自己的需求和项目的特点,灵活地使用模块联邦,提高项目的可维护性和扩展性。
|
8月前
|
存储 监控 安全
【亲测有用】数据中台数据安全管理能力演示
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
【亲测有用】数据中台数据安全管理能力演示
|
Ubuntu API Python
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
410 1
|
SQL 存储 OLAP
实时数仓Hologres OLAP场景核心能力介绍
Hologres提供统一、实时、弹性、易用的一站式实时数仓引擎,解决复杂OLAP难题。
|
存储 编解码 安全
阿里云服务器计算型、通用型、内存型主要实例性能及选择参考
在阿里云的活动中,属于计算型实例规格的云服务器主要有计算型c7、计算型c7a、计算型c8a、计算型c8y、计算型c8i这几个实例规格,属于通用型实例规格的云服务器有通用型g7、通用型g7a、通用型g8a、通用型g8y、通用型g8i,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y、内存型r8i等实例。不同实例规格的云服务器在架构、计算、存储、网络、安全等方面有着不同,因此,其适用场景也有所不同。本文来详细介绍一下阿里云服务器计算型、通用型、内存型主要实例计算、存储等性能及其适用场景,以供参考。
阿里云服务器计算型、通用型、内存型主要实例性能及选择参考
|
Ubuntu Linux 数据库
ubuntu linux 搭建ftp虚拟目录
ubuntu linux 搭建ftp虚拟目录
209 0
使用GoLand进行远程调试
使用GoLand进行远程调试
542 0