JSX 使用理由
每个组件上都有一个render
函数,其写法是this.$createElement('div', {}, [...])
,非常的不直观,JSX
可以改进这种写法,使其更加直观方便。
注意: 如果在组件上定义了
render
方法,则Vue
将忽略template
定义。因为template
最终还是需要编译成render
的格式。
啥叫 JSX 呢
JSX 是 JavaScript 的类似 XML 的语法扩展,没有任何定义的语义。
通过babel
将JSX
转成JS
。简单来说呢,JSX
就是在JS
中写类似HTML
的语法。
如果使用的Vue-cli
大于或等于 3.0 版本,那么就直接可以使用JSX
的语法了。
在 Vue 中使用 JSX 需要注意的地方
- 要监听
JSX
中的事件,我们需要“on”
前缀。 例如,将onClick
用于单击事件。
render (createElement) {
return (
<button onClick={this.handleClick}></button>
)
}
- 绑定变量,注意这里不是使用
:
render (createElement) {
return (
<button content={this.generatedText}></button>
)
}
- 将
HTML
字符串设置为元素的内容,使用domPropsInnerHTML
而不是使用v-html
render (createElement) {
return (
<button domPropsInnerHTML={htmlContent}></button>
)
}
- 我们也可以展开一个大对象:
render (createElement) {
return (
<button {...this.largeProps}></button>
)
}
导入 JSX 组件
在Vue
中使用JSX
的另一个好处是,我们不再需要注册所需的每个组件。 我们只是导入和使用。组件的正常使用是需要注册的。
import { Button } from "../components";
export default {
render(createElement) {
return <Button primary={true}>Edit</Button>;
},
};
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZengXPang's blog!
评论