【问题标题】:Render div in vue在 vue 中渲染 div
【发布时间】:2021-06-06 04:19:29
【问题描述】:

我正在尝试学习 Vue 的 render() 函数来制作页面组件。目前我有这个并且它有效:

function createDiv (h, msg) {
  return h('div', msg)
}

new Vue({
  el: '#q-app',
  data () {
    return {
      text: ''
    }
  },
  render (h) {  
    return createDiv(h, 'msg')
  }
})

但是当我将render() 内容更改为:

  render (h) {
    const arrSample = ['Hey', 'Hi', 'There']
    
    arrSample.forEach(msg => {
      return createDiv(h, msg)
    })
  }

然后它不再渲染任何东西。

谁能帮忙解释一下?

这是一个示例代码笔: https://codepen.io/keechan/pen/vYyVGrR

谢谢!

【问题讨论】:

    标签: vue.js vuejs2


    【解决方案1】:
    1. 问题是你没有从你的render 函数返回任何东西。你只是在创建divVNode。你需要返回一些东西?

    2. 试试这个:

    render(h) {
      const arrSample = ['Hey', 'Hi', 'There']
    
    // map returns your data wrapped by div
      const list = arrSample.map(msg => {
        return createDiv(h, msg)
      })
    
    // reason why we render the list in wrapped div is because
    // you should return a single root node from `render` function.
      return createDiv(h, list)
    }
    
    1. Link to codepen

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-10
      • 2021-11-10
      • 2020-06-06
      • 1970-01-01
      • 2019-10-08
      • 2019-02-24
      • 2019-12-06
      • 1970-01-01
      相关资源
      最近更新 更多