固然不是,你能够定义method
,而后在method
里面返回JSX
,而后在render
函数里面调用这个方法,不只如此,JSX
还能够直接赋值给变量,好比下面这段代码vue
methods: { $_renderFooter() { return ( <div> <ElButton>肯定</ElButton> <ElButton>取消</ElButton> </div> ) } }, render() { const buttons = this.$_renderFooter() return ( <ElDialog visible={this.visible}> <div>这里是一大坨内容</div> <template slot="footer">{buttons}</template> </ElDialog> ) }
虽然大部份内置的指令没法直接在JSX
里面使用,可是自定义的指令能够在JSX
里面使用,就拿element-ui
的v-loading
指令来讲,能够这样用element-ui
render() { /** * 一个组件上面可使用多个指令,因此是一个数组 * name 对应指令的名称, 须要去掉 v- 前缀 * value 对应 `v-loading="value"`中的value */ const directives = [{ name: 'loading', value: this.loading }] return ( <div {...{ directives }} ></div> ) }
有些指令还可使用修饰符,好比上例中的v-loading
,你能够经过修饰符指定是否全屏遮罩,是否锁定屏幕的滚动,这时候就须要这样写 v-loading.fullscreen.lock = "loading"
数组
render() { /** * modifiers指定修饰符,若是使用某一个修饰符,则指定这个修饰符的值为 true * 不使用能够设置为false或者直接删掉 */ const directives = [ { name: 'loading', value: this.loading, modifiers: { fullscreen: true, lock: false } } ] return ( <div {...{ directives }} ></div> ) }
函数