Vue—— JSX渲染函数rander

1、直接在vue实例中使用 rander 函数进行渲染,使用 rander 函数之后,不需要使用 template 以及 components 

    rander 函数的 createElement 方法的第一个参数为组件或者html标签,第二个参数为 option ,第三个参数为插槽的内容

new Vue({
  el: '#app',
  render(createElement) {
    // createElement 这个函数是用来渲染组件或者标签的
    // createElement('组件或者html标签',options={},插槽内容)

    //渲染组件

    return createElement(Test, {
      props: { // 给组件添加props
        num: 100,
        title:'标题',
      },
      on: { // 给组件监听事件
        click() {
          console.log(123)
        }
      },
      style: {//设置样式
        background:'red'
      },
      class: 'test'//添加类
    }, 'Test')
  
    //渲染标签

    //return createElement('button', {
    //  style:'background:red'
    //},'这是一个div')
  }
})

2.通过创建JSX文件来渲染页面

    需要在webpack的配置文件中添加JSX的解析规则(默认不解析JSX文件),在vue-lic中的配置文件是webpack.base.js ,把loader的正则表达式改为 /\.(js|jsx)$/ ,需要使用模板来渲染JSX文件,在JSX中不存在任何vue方法

    在JSX文件中如果需要访问定义的变量,需要使用 {this.XX} 的格式进行访问,如果需要通过rander函数渲染多个标签,需要像Vue的模板一样使用一个容器包裹住

export default {
  data() {
    return {
      title: "这是一个div",
      arr: ["张三", "李四"]
    };
  },
  methods: {
    click() {
      console.log(222);
    },
    input(e) {
      this.title = e.target.value;
    }
  },
  render() {
    return (
      <div>
        {this.arr.map((k, i) => {
          return (
            <div key={i}>
              {k}
              {i}
            </div>
          );
        })}
        {[<div>1</div>, <div>2</div>]}
        <input value={this.title} onInput={this.input} />
      </div>
    );
  }
};

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值