简体   繁体   English

VUE.JS渲染功能

[英]VUE.JS render function

I´m studiying Vue.js and got stuck when using the bellow render function: 我正在研究Vue.js并在使用波纹管渲染功能时陷入困境:

This is an javascript file that I called from my component. 这是我从组件中调用的JavaScript文件。

import Button from './Button'

export default {
  functional: true,
    render(h) {
    return(
        <div id='toolbar'>
        <Button type='markup' tag='strong'> B </Button>
        <Button type='markup' tag='em'> I </Button>
        <Button type='section' tag='h1'> H1 </Button>
        <Button type='section' tag='h2'> H2 </Button>
        <Button type='section' tag='ul'> UL </Button>
        <Button type='section' tag='ol'> OL </Button>
        <slot />
      </div>
    )
  }
}

I need to export the above function, but I´m getting error. 我需要导出上面的函数,但是出现错误。

      5 |     render(h) {
      6 |     return(
   >  7 |         <div id='mobiledoc-toolbar'>
        |         ^
      8 |         <Button type='markup' tag='strong'> B </Button>

I´m getting error when calling this function, not sure if this only works using backqouts/backticks 调用此函数时出现错误,不确定是否只能使用backqouts / backticks

In redux, you can indeed mix HTML markup with JavaScript. 在redux中,您确实可以将HTML标记与JavaScript混合使用。 But there's no such thing in Vue.js. 但是Vue.js中没有这样的东西。 The only way would be to wrap your HTML in template string: 唯一的方法是将HTML包装在模板字符串中:

return(`
    <div id='mobiledoc-toolbar'>
    ...
    </div>
`

or to use <template> template format for vue (if you're using webpack). 或对vue使用<template>模板格式(如果您使用的是webpack)。 Such components look like this: 这些组件如下所示:

<template>
  <div id="toolbar">
  </div>
</template>

<script>
    export default new Vue(

    );
</script>

<style lang="scss">
  // Your styles here
</style>

and then no render() method is necessary. 然后不需要render()方法。

PS: Yes, as @Bert suggested, you can also use Babel JSX Transform plugin and use JSX syntax. PS:是的,按照@Bert的建议,您还可以使用Babel JSX Transform插件并使用JSX语法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM