• React 的高级用法(Children、Component、createElement、cloneElement)


    React.Children

        props.children 代表了所有的子节点。

        React.Children 用于处理 props.children 的

        提供了几个方法 ( map ,foreach )

        遍历所有的子节点,并且配合 React.cloneElement / React.createElement 使用

     

    React.PureComponent / React.Component

        通过 ES6 继承创建组件的两种方式:一个是未深度检查和深度检查

        其他创建组件方法:

        React.createClass({})  移除

        无状态组件

        React.createElement

     React.createElement

          实时创建一个直接创建一个组件

          

    React.createElement(
      type,
      [props],
      [...children]
    )
    

      

     React.cloneElement 

          克隆要给组件,备用

    React.cloneElement(
      element,
      [props],
      [...children]
    )
    

      

       vue 直接用方法创建dom

    render(createElement) {
                    return createElement('section', {
                        style: '',
                        attrs: {
                            style: ' 100%;height: 100%;overflow: hidden;position: relative',
                        },
                        ref: 'box'
                    }, [
                        createElement('section', {
                            style: '',
                            attrs: {
                                style: '-webkit-transition: all 0s;transition: all 0s;-webkit-transform: translate(0,0);transform: translate(0,0);height: 100%',
                            },
                            ref: 'slideBox'
                        }, [
                            this.$slots.default,
                            this.$slots.default,
                            this.$slots.default,
                        ]),
                        (this.pagination ? createElement('div', {
                            attrs: {
                                class: 'jt-com-flex jt-com-center pagination',
                            },
                        }, (() => {
                            const pag = []
                            for (let i = 0; i < itemLength / 3; i++) {
                                pag.push(createElement('p', {
                                    'class': {
                                        active: Math.abs(this.index % 3) === i,
                                    },
                                }))
                            }
                            return pag
                        })()) : null)
                    ])
                },
    

      

  • 相关阅读:
    PAT-乙级-1011. A+B和C (15)
    PAT-乙级-1010. 一元多项式求导 (25)
    PAT-乙级-1009. *说反话 (20)
    PAT-乙级-1008. 数组元素循环右移问题 (20)
    PAT-乙级-1007. 素数对猜想 (20)
    PAT-乙级-1006. 换个格式输出整数 (15)
    PAT-乙级-1005. 继续(3n+1)猜想 (25)
    PAT-乙级-1004. 成绩排名 (20)
    BZOJ 1030: [JSOI2007]文本生成器
    BZOJ 2938: [Poi2000]病毒
  • 原文地址:https://www.cnblogs.com/jiebba/p/11714152.html
Copyright © 2020-2023  润新知