固然不是,你能夠定義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> ) }
函數