каталог
Из - вю createElement с createElement реагирует по- разному, что приводит к JSX формулировкам различны. В данной статье будет записывать некоторую вя из более конкретной формулировки JSX может обратиться к официальному описанию
v-модель формулировки
Официальный сайт v-модели формулировки не представляется возможным, мы должны:
<el-input v-model="inputValue"/>
//
<el-input vModel_trim={inputValue}/>
//或者使用
<el-input
value={this.inputValue}
on-input={val => this.inputValue = val}/>
v-за
<el-tag
v-for="(item, index) in content"
:key="index"
type="success"
>
{{item.name}}
</el-tag>
//
{
this.content.map((item, index) => {
return (
<el-tag
key={index}
type="success"
>
{item.name}
</el-tag>
)
})
}
События и клавиши-модификаторы
Официальная формулировка
<input vOn:click_stop_prevent="newTodoText" />
Некоторые редактора подскажут синтаксическую ошибку
рекомендуются использовать следующую формулировку
<el-input
@keyup.native.enter="fetch()"
@click="click()"
class="width-20"
prefix-icon="el-icon-search"
placeholder="关键字搜索"
/>
// 或者为:
<el-input
class="width-20"
nativeOn-keyup={arg => arg.keyCode === 13 && this.fetch()}
on-click={_ => {this.click()} }
prefix-icon="el-icon-search"
placeholder="关键字搜索"
/>
Следует отметить, не использовать on-click={this.click() }
это письмо, решение уделяемое :.
on-click={this.click.bind(this, args) }
, Но предложенная формулировка on-click={() => {this.click(args)} }
, вам не нужно писать bind(this)
а.
запись данных
JSX фактически createElement
синтаксический сахар .jsx синтаксис в конечном итоге будет преобразован в функцию createElement. При использовании в JSX этикетке , { ...obj }
когда, OBJ будут собраны в createElement
качестве промежуточного параметра.
Следуют отметить, что в Vue createElement с реагировать с тем createElement середины аргументов смыслы одно и то же. В вю в середине аргумента являются объектами данных
, и реагируют, промежуточные параметры props
.
Так что, если вам необходимо установить динамические свойства вступают в реакцию в том же ве, что вам нужно:
const props={
name: 'joyer',
},
// react中
<my-button {...props}></my-button>
// vue中
<my-button {...{
props: props,
}}></my-button>
Если вы не знаете , в template
собственности , как jsx
использование времени, первые могут быть преобразованы в createElement
в data对象
редакции, а затем {...data}
написать jsx
на этикетке.
Такие , как передовые компоненты , используемые v-on="$listeners"
или v-bind="$attrs"
агентом, не уточнил официальный сайт официальный сайт права. v-on="$listeners"
И v-привязывать = «$ ATTRS» объяснил, когда createElement
создается функция, во втором параметре можно записать следующим образом:
return createElement('div', {
props: {
...$attrs,
otherProp: value,
},
on: {
...$listeners,
click() {
},
}
},this.$slots.default])
В JSX, вы можете также использовать данные, синтаксис {...data}
:
// 官网推荐写法
<button domPropsType="submit"><button>
// data方式写法
<button { ...{
domProps: {
type: 'submit',
},
}}><button>
Так что, когда вы не знаете JSX элементов в указанных выше свойств , как писать, вы можете написать все из объекта данных, а затем ...data
на элементе.
const data = {
domProps: {
type: 'submit',
},
scopedSlots: {
default: props => createElement('span', props.text)
},
props: {
...$attrs,
otherProp: value,
},
on: {
...$listeners,
click() {
},
}
}
<button { ...data }><button>
Это позволит решить v-on="$listeners"
или v-bind="$attrs"
.
Обратите внимание , что если вы используете {...data}
дополнительные компоненты в {...data}
сборках , где метка представляет собой использование v-bind="$attrs"
или {...data}
сборки, также необходимо установить AttrS в текущем компоненте: в
качестве cd-table-column-id
источника:
<cd-table-column { ...{
props: this.$attrs,
attrs: this.$attrs,
on: this.$listeners,
scopedSlots,
} } bold>
</cd-table-column>
cd-table-column
Источник:
<el-table-column { ...{
props: columnAttrs,
on: columnListeners,
scopedSlots,
} }>
</el-table-column>
Это происходит потому , что cd-table-column
есть использование {...data}
письма, его реквизита компонента пуст, поэтому набор реквизит является недействительным, необходимо добавить attrs
через attrs
механизм наследования cd-table-column-id
будет this.$attrs
передано .cd-table-column
this.$attrs
слот для формулировки
дефолт
<button>
<slot></slot>
</button>
//
<button>
{this.$scopedSlots.default()}
</button>
Названный слот:
<button>
<slot name="before"></slot>
<slot ></slot>
</button>
//
let before = '';
if (this.$scopedSlots.before) {
before = this.$scopedSlots.before(props => props.text);
}
return (
<button>
{ before }
{this.$scopedSlots.default()}
</button>
Слот Область применения:
<slot :isAdvancedPanelShow="isAdvancedPanelShow"></slot>
//
{this.$scopedSlots.default({
isAdvancedPanelShow: this.isAdvancedPanelShow
})}