vue render 函数 div 动态class怎么写呢?

render(h, row) {
  return (
    <div
    class="titlewrap"
    :class="{
      childrequirement: row.parentCode
    }"
  >
    <icon>
    <pre class="title">{ row.title }</pre>
  </div>
  )
}

这里 div怎么写动态class呢 ? 这么写会报错

image.png

阅读 3.1k
3 个回答

就是按照 jsx 的写法来写就可以了啊:

render(h, row) {
  const classList = [
    'titlewrap',
    row.parentCode ? 'childrequirement' : '' 
  ].join(' ')
  return (
    <div class={ classList }>
      <icon>
      <pre class="title">{ row.title }</pre>
    </div>
  )
}

你这是用了jsx吧,那里面就不能用vue的语法糖了,用最原始的方式来写吧

render(h, row) {
  return (
    <div
    class="titlewrap {row.parentCode?'childrequirement':''  }"
  >
    <icon>
    <pre class="title">{ row.title }</pre>
  </div>
  )
}

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

: 只是 v-bind 的缩写,不用模板是不会生效的

可以改成以下形式:

render() {
  return (
    <div class={{ childrequirement: row.parentCode }}>
      Hello, World!
    </div>
  );
}

需要注意的点就是这里的 {{}} 不是 vue 的插值语法,JSX{} 接收一个表达式,只不过刚好收到一个对象{ childrequirement: row.parentCode },才有了 class={{ childrequirement: row.parentCode }}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题