Vue 之render函数的学习与使用

render渲染函数
我们可以生成DOM元素在template中,但是我们也可以使用render渲染函数

<h1>{{ blogTitle }}</h1>

在渲染函数中:

render: function (createElement) {
  return createElement('h1', this.blogTitle)
}

在这两种情况下,Vue 都会自动保持页面的更新,即便 blogTitle 发生了改变。

虚拟 DOM
createElement 到底会返回什么呢?其实不是一个实际的 DOM 元素。它更准确的名字可能是 createNodeDescription,因为它所包含的信息会告诉 Vue 页面上需要渲染什么样的节点,及其子节点。我们把这样的节点描述为“虚拟节点 (Virtual Node)”,也常简写它为“VNode”。“虚拟 DOM”是我们对由 Vue 组件树建立起来的整个 VNode 树的称呼。
createElement参数

createElement(
  // {String | Object | Function}
  // 一个 HTML 标签字符串,组件选项对象,或者
  // 解析上述任何一种的一个 async 异步函数,必要参数。
  'div',

  // {Object}
  // 一个包含模板相关属性的数据对象
  // 这样,您可以在 template 中使用这些属性。可选参数。
  {
    // (详情见下一节)
  },

  // {String | Array}
  // 子节点 (VNodes),由 `createElement()` 构建而成,
  // 或使用字符串来生成“文本节点”。可选参数。
  [
    '先写一些文字',
    createElement('h1', '一则头条'),
    createElement(MyComponent, {
      props: {
        someProp: 'foobar'
      }
    })
  ]
)

生成数据表的每列的tablesearch功能,是动态生成input 输入框,用iview的组件实现的会比较好,因为组件给我们绑定了一些事件,我们呢直接调用就可以。

    addSearch (h, {column}) {
      let inputValue = {}
      return h('Input', {
        props: {
          placeholder: 'Search' + ' ' + column.label,
          icon: 'ios-search-strong'
        },
        style: {
          paddingRight: '5px'
        },
        on: {
          input: val => {
            inputValue = val
            if (!inputValue) {
              this.vaildInputValue(column.label, inputValue)
            }
          },
          class: 'ivu-input-icon',
          'on-click': () => {
            this.vaildInputValue(column.label, inputValue)
          },
          'on-enter': () => {
            console.log('enter')
            this.vaildInputValue(column.label, inputValue)
          }
        }
      })
    },

如果是element UI

    addSearch (h, {column}) {
      let inputValue = {}
      return h('el-input', {
        attrs: {
          placeholder: 'Search',
          'suffix-icon': 'el-icon-search'
        },
        style: {
          paddingRight: '5px'
        },
        on: {
          input: val => {
            inputValue = val
            if (!inputValue) {
              this.vaildInputValue(column.label, inputValue)
            }
          },
          'change': () => {
            console.log('click')
            this.vaildInputValue(column.label, inputValue)
          },
          'enter': () => {
            console.log(enter)
            this.vaildInputValue(column.label, inputValue)
          }
        }
      })

他们本身自带的定义事件可以让我们大大提高了工作效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中的render函数是用来创建组件的虚拟DOM树,并将其渲染到实际的DOM上。它可以用于编写更灵活和高效的组件。 在Vue 3中,render函数采用了一种新的语法,称为JSX语法。下面是一个简单的示例,展示如何使用render函数: ```javascript import { createApp, h } from 'vue' const app = createApp({ render() { return h('div', 'Hello, Vue 3!') } }) app.mount('#app') ``` 在上面的示例中,我们首先导入了`createApp`和`h`函数。`createApp`用于创建Vue应用实例,而`h`函数是用来创建虚拟DOM节点。 在`render`函数中,我们使用`h`函数创建了一个`div`节点,并设置其内容为"Hello, Vue 3!"。最后,我们使用`app.mount('#app')`将应用挂载到id为`app`的DOM元素上。 你也可以在render函数中创建更复杂的虚拟DOM结构,例如嵌套的子节点、绑定事件等。以下是一个稍复杂的示例: ```javascript import { createApp, h } from 'vue' const app = createApp({ render() { return h('div', [ h('h1', 'Hello, Vue 3!'), h('button', { onClick: this.handleClick }, 'Click me') ]) }, methods: { handleClick() { console.log('Button clicked!') } } }) app.mount('#app') ``` 在上面的示例中,我们创建了一个包含`h1`标题和一个按钮的`div`节点。按钮上绑定了`onClick`事件,点击按钮时会触发`handleClick`方法。 这就是使用Vue 3中的render函数创建组件的基本用法。希望对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值