美文网首页
渲染函数&JSX

渲染函数&JSX

作者: 66pillow | 来源:发表于2017-10-27 20:48 被阅读0次

1.基础

render函数提供javascript完全编程能力

<!--h1>Hello world!</h1-->
<my-header level="1">Hello world!</my-header>
<!--h2>Hello world!</h2-->
<my-header level="2">Hello world!</my-header>
Vue.component('myHeader', {
    props: ["level"],
    render: function (createElement) {
        return createElement(
                //html
                'h' + this.level,
                //slot
                this.$slots.default
        );
    }
});

2.节点,树以及虚拟DOM

虚拟DOM:vue通过建立一个虚拟DOM对真实DOM发生的变化保持追踪,createElement返回虚拟节点(VNode)

<!--<div id="foo" class="foo" style="color: red; font-size: 14px;">文本<h1>2</h1></div>-->
<my-component></my-component>
Vue.component('myComponent', {
    render: function (createElement) {
        return createElement(
                // {String | Object | Function} 必须
                'div',
                // {Object} 可选 包含模板相关属性的数据对象
                {
                    'class': {
                        foo: true,
                        bar: false
                    },
                    style: {
                        color: 'red',
                        fontSize: '14px'
                    },
                    attrs: {
                        id: 'foo'
                    },
                    props: {
                        myProp: 'bar'
                    }
//                  domProps: {
//                       innerHTML: 'baz'
//                  }
                },
                // {String | Array} 子节点(VNodes)
                [
                    '文本',
                    createElement('h1', '2')
//                  createElement(myComponent, {
//                       props: {
//                           someProp: 'foobar'
//                       }
//                   })
                ]
        );
    }
});

组件树中所有VNodes必须唯一

3.JSX

Vue支持JSX语法(通过Babel插件编译)

new Vue({
    el:'#demo',
    render (h){
        return (
            <div></div>
        )
    }
});

h作为createElement别名是Vue惯例

4.函数式组件

标记组件为functional,意味它是无状态(没有data),无实例(没有this上下文)

Vue模板实际编译成了render函数

相关文章

  • 渲染函数&JSX

    1.基础 render函数提供javascript完全编程能力 2.节点,树以及虚拟DOM 虚拟DOM:vue通过...

  • 渲染函数&JSX

    渲染函数 背景 Vue推荐在绝大多数情况下使用模版来创建你的HTML。然后在一些场景中,你真的需要JavaScri...

  • vue 渲染函数 & JSX

    渲染函数 render 通过渲染函数渲染组件 渲染后: JSX 通过以上方式创建虚拟DOM,语法比较繁琐。可以使用...

  • react语法结构

    1.react JSX语法原理 react是函数式编程,使用jsx语法来渲染组件。jsx语法是合法的JavaScr...

  • react之setState的异步及合并执行更新组件

    前言须知 jsx的渲染过程jsx会经过babel编译成createElement函数的结构,然后createEle...

  • vue 渲染函数&jsx

    jsx react模板渲染语法

  • vue渲染函数 & JSX

    1. 渲染 input 2. v-for 3. v-if 条件, 多个需要用【

    】包裹起来 4...

  • Vue 渲染函数 & JSX

    Vue - template Vue 官方推荐使用template语法来创建应用,虽然写法像html,但Vue最终...

  • React性能优化

    1:不要在JSX中写内联函数,这样性能有所损耗。比如 原因有二: 每一次渲染这段JSX,都会产生新的函数对象 每一...

  • Vue render函数详解

    渲染函数 & JSX 基础[https://cn.vuejs.org/v2/guide/render-functi...

网友评论

      本文标题:渲染函数&JSX

      本文链接:https://www.haomeiwen.com/subject/fuifyxtx.html