ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### render()函数 render渲染函数,返回值为VNode即虚拟节点,只有一个参数createElement,也是函数,该参数接受三个参数: 要渲染的最外层HTML标签,标签的属性,子虚拟节点 (VNodes) ```js render: createElement => { return createElement( 'div', { // 接受一个字符串、对象或字符串和对象组成的数组 'class': { foo: true, bar: false }, style: { color: 'red', fontSize: '14px' }, // 普通的 HTML attribute attrs: { id: 'foo' }, props: { myProp: 'bar' }, // DOM property domProps: { innerHTML: 'baz' }, // 事件监听器, 但不再支持如 `v-on:keyup.enter` 这样的修饰器。 需要在处理函数中手动检查 keyCode。 on: { click: this.clickHandler }, // 仅用于组件,用于监听原生事件,而不是组件内部使用; `vm.$emit` 触发的事件。 nativeOn: { click: this.nativeClickHandler }, // 自定义指令。注意,你无法对 `binding` 中的 `oldValue`赋值,因为 Vue 已经自动为你进行了同步。 directives: [{ name:'my-directive', value:'2', expression:'1 + 1', arg:'foo', modifiers:{bar: true} }], // 作用域插槽的格式为 { name: props => VNode | Array<VNode> } scopedSlots: { default: props => createElement('span', props.text) }, // 如果组件是其它组件的子组件,需为插槽指定名称 slot: 'name-of-slot', key: 'myKey', ref: 'myRef', refInFor: true }, // 3. 第三个参数,1中渲染的标签的子元素数组【可选】,不使用此参数,用 null 占位 或不写 [ createElement('a', {attrs: {name: headingId, href: 'https://www.baidu.com'}}, []) ] ) } ```