博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue使用render渲染&jsx
阅读量:6720 次
发布时间:2019-06-25

本文共 3660 字,大约阅读时间需要 12 分钟。

// App.tsimport hBtn from './components/hBtn'import hUl from './components/hUl'export default {  data(){    return {      theme: "mdui-theme-pink",      accent: "mdui-theme-accent-pink",      users:['aoo', 'boo', 'coo']    }  },  methods:{  },  render(h){    return h('div',{      'class':[this.theme, this.accent],      attrs:{        id: 'app'      }    },[      h(hBtn,{        'class':['mdui-color-theme-accent']      }),      h('ul',{},        [        h('li',{          'class':{            'text-danger':true          },          style:{            color:'red';          }        } ,'start'),          this.users.length            ? this.users.map((key, index)=>{              return h('li',key)            })            : h('li','v-if else 这样写')          ,        h('li', 'end')      ]    ),    h(hUl,{      attrs:{        users:['user1', 'user2']      }    })  ]);// return end}, //render end}

// src/components/hBtn.tsvar Text = {// 在内部定义了一个组件  props:['body'],  render(h){    return h('span',[this.body])  }}export default {  data(){    return {      myName: "ajanuw"    }  },  methods:{    echo (num:number):void {      alert(num)    }  },  mounted(){    console.log( '组件渲染完成!!')  },  render(h) {    return h(      'button',      {        // 和`v-bind:class`一样的 API        'class':['mdui-btn'],        style: {// 定义 style          fontSize: '22px'        },        attrs:{// 定义attribute, 可以利用这个更组件传递 props          id: "ajanuw"        },        domProps: {// DOM 属性             // innerHTML 会替换组件内部的赋值        },        on: {          click: this.echo.bind(null, 1995)        }      },      [        h(Text, {attrs:{body:"this a "},ref: 'start'} ),        h(Text, {attrs:{// 使用text组件, 传递props            body:this.myName}, ref: 'end'} )      ]    );  }}

// src/components/hUl.ts// 渲染一个列表var list = {  props:['body']  render(h){    return h('li', this.body)  }};export default {  props:['users'],  render(h){    if(this.users){      if(this.users.length){        return h('ul',{},[          this.users.map((key, index)=>{            return h(list,{              attrs:{                body: key              }            })          })        ])      }else{        return h('ul', {}, [          return h(list, {            attrs:{              body: "没有数据哦!"            }          })        ])      }    }  }, //render end}

vue init webpack vueJsx

cd vueJsx
npm install babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx babel-helper-vue-jsx-merge-props babel-preset-env --save-dev
npm i
npm start

// .babelirc{  "presets": ["env"],  "plugins": ["transform-vue-jsx"]}

// App.jsvar Text = {  props:['body'],  render(h){    return(    

console.log( this.body)} style={

{color:'red'}} > hello {this.body}

);// return end }}var List = { props:['body'], render(h){ return (
  • console.log( this.body)}>{ this.body}
  • ); }}export default { data(){ return { name:"ajanuw", users: ['aoo', 'boo'] } }, methods:{ echo(name){ alert( name) } }, render(h){ return (
      { this.users.length !==0 ? this.users.map((key, index)=>{ return
      }) :
    • 没有数据
    • }
    );// return end }, // render end}

    "vue": "^2.5.2" 发现自带 jsx 模块。。。

    把App.vue 改成 App.js 文件

    // App.jsexport default {  data(){    return {      name: 'ajanuw'    }  },    render(){    return (      

    hello {this.name}

    ) }}
    // main.jsimport App from './App'     =>     import App from './App.js'

    转载于:https://www.cnblogs.com/ajanuw/p/8011058.html

    你可能感兴趣的文章
    iOS 往工程里添加自定义字体
    查看>>
    Express cookie-parser
    查看>>
    scp命令
    查看>>
    MySQL数据库性能优化之存储引擎选择
    查看>>
    前端面试大全(一)
    查看>>
    类加载过程的原理分析
    查看>>
    Day1_HTML_排版标签
    查看>>
    基本分词
    查看>>
    系统提示不能打开文件langbar.chm
    查看>>
    混合云工作负载5个安全问题
    查看>>
    对于上一篇文章的补充,关于String类型的比较
    查看>>
    固定边栏滚动特效
    查看>>
    学习英文之社区,博客及源码
    查看>>
    Git备忘
    查看>>
    Lvs+keepalived+httpd+NFS搭建高可用
    查看>>
    配置浏览器来显示基于WebGL的动画
    查看>>
    python 知识点小结
    查看>>
    CentOS7.4 yum 安装 Apache php5.6 或者 php7
    查看>>
    avalon2问题总结
    查看>>
    spring boot 集成quartz 2.0 实现前端动态配置(获取spring上下文)的两种方式,启动数据库中已开启定时任务...
    查看>>