zoukankan      html  css  js  c++  java
  • vue中的render函数

    创建一个HelloWorld组件:

    <script>
    import Test from '@/components/Test'
    export default {
      props: { tag: String },
      data() {
        return { arr: ['小王', '小明', '小红'] }
      },
      // template标签在vue内部会被编译成render函数
      render(createElement) {
        return createElement(
          this.tag, // 这里可以写 div li 等标签,可以由父组件传入,也可以写组件
          {},
          this.arr.map((item, index) =>
            createElement(
              // 'li',
              Test, // 这里渲染组件时,需要将 on 换成 nativeOn
              {
                props: { name: item, index },
                attrs: { class: 'my-li' },
                nativeOn: {
                  click: () => {
                    console.log('点击li', index)
                  }
                }
              },
              item
            )
          )
        )
      },
      components: { Test }
    }
    </script>

    Test.vue:

    <script>
    export default {
      props: { name: String, index: Number },
      render(h) {
        return h(
          'li',
          {
            style: {
              color: 'orange',
              fontWeight: 'bold'
            },
            on: {
              click: () => {
                console.log('点击li了', this.index)
              }
            }
          },
          `name:${this.name}`
        )
      }
    }
    </script>

    App.vue中引入和使用:

    <template>
      <div id="app">
        <HelloWorld tag='ul' />
      </div>
    </template>
    <script>
    import HelloWorld from '@/components/HelloWorld'
    export default {
      components: { HelloWorld }
    }
    </script>

    效果:

    createElement函数的参数:

    参数一:需要渲染成什么标签,可以是props接收的值,也可以是一个组件

    参数二:配置项,attrs设置标签属性,on设置标签事件,nativeOn设置原生事件(当渲染组件时需要在nativeOn中设置事件),style设置样式,props设置子组件的值

    参数三:标签的内容

  • 相关阅读:
    linux(ubuntu)设置开机启动
    mysql 数据库迁移
    maven GroupId和ArtifactID
    Android内存溢出与内存泄漏
    Android性能优化方向和相关工具
    安卓 px,dpi,dp,ps的区别与联系
    python 深浅拷贝
    公网ip和私网ip
    打开系统设置页
    如何用代码开启“个人热点”功能?如何用代码把iOS设备设置成一个无线路由?
  • 原文地址:https://www.cnblogs.com/wuqilang/p/15090952.html
Copyright © 2011-2022 走看看