python组件的react实现_【React源码解读】- 组件的实现

本文通过React源码解读,探讨了React组件从JSX语法到实际DOM的转换过程,包括Component、createElement、ReactElement等关键步骤,揭示了React组件的内部工作机制。
摘要由CSDN通过智能技术生成

前言

react使用也有一段时间了,大家对这个框架褒奖有加,但是它究竟好在哪里呢?

让我们结合它的源码,探究一二!(当前源码为react16,读者要对react有一定的了解)

0600cdfa05718b4b915bfa36d0ef6858.png

回到最初

根据react官网上的例子,快速构建react项目

npx create-react-app my-app

cd my-app

npm start

打开项目并跑起来以后,暂不关心项目结构及语法糖,看到App.js里,这是一个基本的react组件 我们console一下,看看有什么结果。

import React, { Component } from 'react';

import logo from './logo.svg';

import './App.css';

class App extends Component {

render() {

return (

logo

Edit src/App.js and save to reload.

);

}

}

export default App;

console.log()

e8ada0580edbef6119a799670f12f35e.png

可以看到,组件其实是一个JS对象,并不是一个真实的dom。

ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。有兴趣的同学可以去阮一峰老师的ES6入门详细了解一下

上面有我们很熟悉的props,ref,key,我们稍微修改一下console,看看有什么变化。

console.log(

你好,这里是App组件
)

5bad554e8eccceaad1a679ca0a323fb0.png

可以看到,props,key都发生了变化,值就是我们赋予的值,props中嵌套了children属性。可是为什么我们嵌入的是div,实际上却是一个对象呢?

打开源码

/node_modules/react

3e5df62920b21abadd0bcb3231162830.png

首先打开index.js

'use strict';

if (process.env.NODE_ENV === 'pro

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值