在Vue中,可以使用render函數以編碼的方式創建組件模板。其中,class屬性是用于對元素進行CSS類的動態設置。在render函數中,同時可以使用對象、數組、函數和字符串四種形式來為元素添加class。下面將具體講解這四種形式的使用方法。
//對象形式 render() { return createElement('div', { class: { 'class1': true, 'class2': this.isActive // isActive是data中已定義的變量 } }, 'Hello World') }
對象形式是最常用的一種方式。可以在class對象中設定多個class名,可以根據多個條件的不同來動態控制不同的CSS樣式。其中class1是固定的,而class2則是由isActive變量決定。在組件內使用this.isActive來更新isActive的值,從而動態添加或刪除class名,達到控制元素樣式的目的。
//數組形式 render() { return createElement('div', { class: ['class1', {'class2': this.isActive}] }, 'Hello World') }
數組形式同樣也可以實現動態添加或刪除class名。需要將class名以字符串的形式直接存放在數組中,并在數組中加入需要判斷的條件。在class2中,當this.isActive返回true時,數組中的class2將會被添加到元素的class屬性當中。
//函數形式 render() { return createElement('div', { class: this.classObject }, 'Hello World') }, computed: { classObject() { return { 'class1': true, 'class2': this.isActive } } }
使用函數形式,可以在computed屬性中定義class屬性的對象,在函數中返回這個對象,從而動態地控制元素樣式。這種方式可以在函數中方便地實現各種復雜邏輯來控制元素的class名,如結合其他變量來動態設置class名,或根據不同條件切換class名等。
//字符串形式 render() { return createElement('div', { class: 'class1 class2' }, 'Hello World') }
最后一種方式是字符串形式,它可以直接將class名以字符串的方式寫在class屬性中。但這種方式功能比較單一,無法動態地控制元素的樣式。因此,大部分情況下并不建議使用此方式。
上一篇vue 構建json參數
下一篇vue 標簽增加屬性