zoukankan      html  css  js  c++  java
  • JSX本质

    1.JSX的使用

    class JSXBaseDemo extends React.Component {
        constructor(props) {
            super(props)
            this.state = {
                name: 'xiaoming',
                imgUrl: 'https://img1.mukewang.com/5a9fc8070001a82402060220-140-140.jpg',
                flag: true
            }
        }
        render() {
            // 获取变量 插值
            const pElem = <p>{this.state.name}</p>
            return pElem
    
            // 表达式
            const exprElem = <p>{this.state.flag ? 'yes' : 'no'}</p>
            return exprElem
    
            // 子元素
            const imgElem = <div>
                <p>我的头像</p>
                <img src="xxxx.png"/>
                <img src={this.state.imgUrl}/>
            </div>
            return imgElem
    
            // class
            const classElem = <p className="title">设置 css class</p>
            return classElem
    
            // style
            const styleData = { fontSize: '30px',  color: 'blue' }
            const styleElem = <p style={styleData}>设置 style</p>
            // 内联写法,注意 {{ 和 }}
            // const styleElem = <p style={{ fontSize: '30px',  color: 'blue' }}>设置 style</p>
            return styleElem
    
            // 原生 html
            const rawHtml = '<span>富文本内容<i>斜体</i><b>加粗</b></span>'
            const rawHtmlData = {
                __html: rawHtml // 注意,必须是这种格式
            }
            const rawHtmlElem = <div>
                <p dangerouslySetInnerHTML={rawHtmlData}></p>
                <p>{rawHtml}</p>
            </div>
            return rawHtmlElem
    
            // 加载组件
            const componentElem = <div>
                <p>JSX 中加载一个组件</p>
                <hr/>
                <List/>
            </div>
            return componentElem
        }
    }
    
    export default JSXBaseDemo

    2. JSX最终出来的是什么,是通过React.createElement函数来实现的,它的参数是怎么样的,最终返回的结果是什么,最终通过patch来渲染

                    通过React.createElement即h函数,返回vnode
                    第一个参数可能是元素,也可能是组件,通过 组件的首字母一定是大写来区分(react规定)

                    React.createElement('div',null,child1,child2,child3)
                    React.createElement('div',null,[child1,child2,child3])
                    React.createElement('List',null,child1,child2,"文本节点")
     
  • 相关阅读:
    repo manifest xml 文件修改后提交命令
    linux下i2c驱动笔记 转
    这么多年至今今天遇到的一件令我气愤还无法想象的,希望看到的人引以为戒吧。不明白现在的孩子怎么了!
    GitLab 之 Linux十分钟快装
    Mongodb For Mac OSX && 登录验证
    Grunt 5分钟上手:合并+压缩前端代码
    回顾:前端模块化和AMD、CMD规范(全)
    通过NPM快速发布你的NodeJS模块(组件包)
    【linux】netlink
    【Java基础知识】JNI入门
  • 原文地址:https://www.cnblogs.com/zhuMother/p/13236095.html
Copyright © 2011-2022 走看看