JSX 语法
# JSX 语法
# 内容
render() {
return <p>hello</p>
}
# 具有动态内容:
render() {
return <p>hello { this.message }</p>
}
# 单标签:
render() {
return <input />
}
# 使用组件:
import MyComponent from './my-component'
export default {
render() {
return <MyComponent>hello</MyComponent>
},
}
# 属性
render() {
return <input type="email" />
}
# 使用动态绑定:
render() {
return <input
type="email"
placeholder={this.placeholderText}
/>
}
# 绑定事件:
render() {
return <input onInput={this.handleInput} />
}
# 动态绑定事件:
render() {
const events = {
"visible-change": () => {
console.log("visible-change");
},
}
return <input on={events} />
}
# 动态属性:
render() {
const props = {
type: 'email',
placeholder: 'Enter your email'
}
return <input props={props} />
}
# 使用扩展运算符:
render() {
const inputAttrs = {
type: 'email',
placeholder: 'Enter your email'
}
return <input {...{ attrs: inputAttrs }} />
}
# 插槽
# 命名插槽:
render() {
return (
<MyComponent>
<header slot="header">header</header>
<footer slot="footer">footer</footer>
</MyComponent>
)
}
# 作用域插槽:
render() {
const scopedSlots = {
header: () => <header>header</header>,
footer: () => <footer>footer</footer>
}
return <MyComponent scopedSlots={scopedSlots} />
}
# 指令
<input vModel={this.newTodoText} />
// or
<input v-model={this.newTodoText} />
# 使用修饰符:
<input vModel_trim={this.newTodoText} />
# 带有参数:
<input vOn:click={this.newTodoText} />
# 带有参数和修饰符:
<input vOn:click_stop_prevent={this.newTodoText} />
# v-html:
<p domPropsInnerHTML={html} />