JSX 的本质

JSX 的本质

JSX 本质其实是一个函数(React.createElement)。

  • React.createElement 有三个参数,第一个参数是 type 也就是标签或者组件名、第二个参数是 props 是标签属性(例如 id、class、样式或者向子组件传递的数据等)、第三个参数是 children 是标签或者组件内的内容。
  • 说的有点抽象。以代码为例。
import React, { Component } from "react";

export default class JSX extends Component {
  render() {
    return (
      <div>
        {/* 正常写法 */}
        <p>JSX,正常的JSX写法</p>

        {/* React.createElement */}
        {
          React.createElement(
            "p",    // type 标签或组件名
            { 
              style: {
                color: 'green'  //   id、class、样式或者向子组件传递的数据等(如果没有属性,则设置为 null)
              } 
            },          
            "JSX,createElement函数写法"   // 内容
            )     
        }
        {
          React.createElement()
        }
      </div>
    );
  }
}

显示结果:
在这里插入图片描述

  • 嵌套的写法
React.createElement(
  'div',
   null,
   React.createElement(
     'h1',
     {
        style: {
           color: 'green'
        }
      },
         'h1 标签的内容'
      )
)

在这里插入图片描述

  • 当 type 是组件时
// 子组件
const TestCom = (props) => {
  return <div>
    这是 TestCom 组件, 这是父组件传递的数据:{ props.content }
  </div>
}
// 父组件
export default class JSX extends Component {
  render() {
    return (
      <div>
        {
          React.createElement(
            TestCom,   // type: 组件名
            {
              content: '父组件传递的数据'   // 传递给子组件的数据
            }
          )
        }
        
      </div>
    );
  }
}

结果:
在这里插入图片描述
React.createElement 返回的不是真实的 DOM ,而是虚拟DOM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值