1. render(createElement){
  2. return createElement('',{},[])
  3. }

createElement参数

createElement接收的参数:

  1. createElement(标签名(必需), 与模板中属性对应的数据对象(可选), 子级虚拟节点(可选));

官网上的参数演示

  1. // @returns {VNode}
  2. createElement(
  3. // {String | Object | Function}
  4. // 一个 HTML 标签名、组件选项对象,或者
  5. // resolve 了上述任何一种的一个 async 函数。必填项。
  6. 'div',
  7. // {Object}
  8. // 一个与模板中 attribute 对应的数据对象。可选。
  9. {
  10. // (详情见下一节)
  11. },
  12. // {String | Array}
  13. // 子级虚拟节点 (VNodes),由 `createElement()` 构建而成,
  14. // 也可以使用字符串来生成“文本虚拟节点”。可选。
  15. [
  16. '先写一些文字',
  17. createElement('h1', '一则头条'),
  18. createElement(MyComponent, {
  19. props: {
  20. someProp: 'foobar'
  21. }
  22. })
  23. ]
  24. )

深入数据对象—也就是createElement参数中的第二个参数

  1. {
  2. // 与 `v-bind:class` 的 API 相同,接受一个字符串、对象或字符串和对象组成的数组
  3. class: {
  4. foo: true,
  5. bar: false
  6. },
  7. // 与 `v-bind:style` 的 API 相同,接受一个字符串、对象,或对象组成的数组
  8. style: {
  9. color: 'red',
  10. fontSize: '14px',
  11. },
  12. // 普通的 HTML attribute
  13. attrs: {
  14. id: 'foo',
  15. },
  16. // 组件 prop
  17. props: {
  18. myProp: 'bar',
  19. },
  20. // DOM属性
  21. domProps: {
  22. innerHTML: 'baz',
  23. },
  24. // 事件监听器,不支持如“v-on:keyup.enter”这样的修饰器
  25. on: {
  26. click: this.onClick
  27. },
  28. // 仅用于组件,用于监听原生事件,而不是组件内部使用 vm.$emit 触发的事件。
  29. nativeOn: {
  30. click: this.nativeClickHandler
  31. },
  32. // 自定义指令。注意,无法对 `binding` 中的 `oldValue`赋值,因为 Vue 已经自动为你进行了同步。
  33. directives: [
  34. {
  35. name: 'my-custom-directive',
  36. value: '2',
  37. expression: '1 + 1',
  38. arg: 'foo',
  39. modifiers: {
  40. bar: true
  41. }
  42. }
  43. ],
  44. // 其它特殊顶层属性
  45. key: 'myKey',
  46. ref: 'myRef',
  47. // 如果在渲染函数中给多个元素都应用了相同的 ref 名,那么 `$refs.myRef` 会变成一个数组。
  48. refInFor: true
  49. // 作用域插槽,格式为:{ name: props => VNode | Array<VNode> }
  50. // 如果组件是其它组件的子组件,需为插槽指定名称
  51. slot: 'name-of-slot',
  52. scopedSlots: {
  53. default: props => createElement('span', props.text)
  54. },
  55. }