在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我们可以直接创建jsx/tsx文件 这次的项目结构是这样的: 在vue文件里这么使用 // index.vue <template> <div class="wrapper"> <Common :opt="list" /> </div> </template> <script lang="ts"> import { Component, Vue } from "vue-property-decorator"; import Common from "./components/Common"; @Component({ name: "App", components: { Common, }, }) export default class App extends Vue { private list = ["我要去淘宝", "我要去百度", "我要去京东"]; } </script> tsx这么写 import { CreateElement } from 'vue'; import { Component, Vue, Prop } from 'vue-property-decorator'; @Component({ name: 'Common' }) export default class Common extends Vue { @Prop(Object) opt!: any[] render(h: CreateElement) { return <span> { this.opt.map((it) => { return <span style="marginRight:10px">{it}</span> }) } </span> } } 在来看一下页面 可能有心者注意到了 我还引用了一个 简单介绍一下传参: 第一个参数: { 第二个参数: 第三个参数: { 渲染函数给vue带来了很多的灵活性,以前你想自定义在子组件里插入东西,得写一大堆的插槽 // 改造一下上面的index.vue的data private list = [ { render: () => ["a", { style: { color: "red" } }, "我要去淘宝"] }, { render: () => ["a", { style: { color: "green" } }, "我要去京东"] }, { render: () => ["a", { style: { color: "pink" } }, "我要去百度"] }, ]; tsx中这么写: { this.opt.map((it) => { return h(...it.render()) }) } 就可以渲染出花里胡哨的页面了 我们还可以这么玩: // tsx改造 <span> { this.opt.map((it) => { return it.render(h) }) } </span> 在index.vue页面我们就可以这么玩: // index.vue private list = [ { render: (h: CreateElement) => h("a", { style: { color: "red", marginRight: "5px" } }, "我要去淘宝"), }, { render: (h: CreateElement) => h("a", { style: { color: "green", marginRight: "5px" } }, "我要去京东"), }, { render: (h: CreateElement) => h("a", { style: { color: "pink", marginRight: "5px" } }, "我要去百度"), }, ]; 结果也是同样的花哨 我们同样可以渲染乱七八糟的标签! // index.vue改造 { render: (h: CreateElement) => h( "h1", { style: { color: "green", marginRight: "5px" }, }, "我要去京东" ), }, 我们可以随心所欲的在渲染函数中定义事件: // index.vue private list = [ { render: (h: CreateElement) => h( "a", { style: { color: "red", marginRight: "5px" }, on: { click: () => this.iWillGoWhere("TB"), }, }, "我要去淘宝" ), }] iWillGoWhere(type: string) { const goWhere: any = { TB: () => { alert("我要去淘宝!"); }, JD: () => { alert("我要去京东!"); }, BD: () => { alert("我要去百度!"); }, }; goWhere[type](); } 这样就可以啦! 到此这篇关于关于怎么在vue项目里写react详情的文章就介绍到这了,更多相关在vue项目里写react内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论