回顾react的一般使用场景

如下所以所以,经常我们在开发项目的时候,创建每一组件,组件的第一行都会引入React,然而发现并没有使用过它。

import React, { Component } from 'react';export default class Home extends Component{    render() {        return 
hello react

}}

提出一个假想,如果不引入React会怎么样呢?程序还会不会正常的运行?

结果来了

不引入React的结果

上图就是不引入React的时候报的错误,错误的意思是React没有定义。看到这里可能就有点蒙了,既然引入的React根本没有使用,但是去掉它之后却报错了,说明该组件还是需要React的,那么它是怎么使用React的呢?

React背后的运用

React的运行机制能够解释一切,react的运行大概分成了三个阶段:

  1. jsx(也就是javascript xml)对象转变成javascript对象
  2. javascript对象转变成虚拟DOM对象
  3. 虚拟DOM对象变成实际的DOM对象

今天这个问题的答案主要就在第一,二阶段,众所周知周知,在第一阶段其实主要用到了Babel。Babel主要的功能就是转码功能,将ES6转换成ES5。

举个例子,现在有一个函数组件:

function Home() {    return (        
{alert(123)}} style={{ height: 30, background: 'red' }} > hello, react

)}

经过Babel转码后会变成什么呢?

"use strict";function Home() {  return /*#__PURE__*/React.createElement("div", {    className: "ele-wrapper",    onClick: function onClick() {      alert(123);    },    title: "123",    style: {      height: 30,      background: 'red'    }  }, "hello, ", /*#__PURE__*/React.createElement("span", null, "react"));}

这里似乎看到了一个熟悉的东西: React.createElement(.......),确实React是在这里使用的,所以我们在写代码的时候从表面上是看不出来React被使用了。

另外Babel是怎么调用React的呢?

我们在React项目使用Babel的时候,主要用到了这三个:

  • babel-core
  • babel-preset-env
  • babel-plugin-transform-react-jsx

并且通常都会创建一个.babelrc的文件,文件中内容基本都如下:

{    "presets": ["env"],    "plugins": [        ["transform-react-jsx", {            "prama": "React.createElement"        }]    ]}

可以看到在使用babel-plugin-transform-react-jsx插件的时候,会需要调用React.createElement,这也就解释了为什么每个React组件页面都需要引入React的原因。

elementui的css文件没有引入_为什么每个React组件都需要引入React?相关推荐

  1. elementui的css文件没有引入_Python中引入模块详细介绍,使用模块的过程中注意事项教程...

    ​ 为此 Python 提供了一个办法,把这些定义存放在文件中,这个文件被称为模块. 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. ...

  2. Echart的效果图表(组件都是引入echart的块)

    折线图 <template><div class="number"><div id="NumberChart"></d ...

  3. html引入css文件和js文件方式

    <link rel="stylesheet" href="../theme/default/style.css" type="text/css& ...

  4. 前端面试之---link 引入css文件和@import引入css文件的区别

    css引入方式link与import的区别 1.link属于html标签,而@import是css提供的,只能加载CSS 2.加载顺序,link在页面加载时被加载,@import在页面加载完之后再加载 ...

  5. html如何引入css文件?HTML引入外部css文件的四种方法

    在学习前端的时候,我们应该知道css给html标记添加各种样式,用来告诉浏览器,因该如何显示这些标记里面的内容.既然css是用来给html添加各种样式的,那么,html中如何引入外部的css文呢?本篇 ...

  6. css如何在html中链接代码,怎么在html中链接css文件?怎么链接css文件教程源码!...

    在我们的平常学习中,每一个课时和每一个知识点直接都是有关联的,那么今天我们就来说说怎么在html中链接css文件,下面是小编为大家准备的一些链接css文件教程源码! 1.行内式 这是一种直接在html ...

  7. web项目html引入css文件路径,详解Webpack和Webpack-simple中如何引入CSS文件_旧店_前端开发者...

    博主最近研究 首先说一下如何在webpack中引入 之后在App.vue文件中在style标签项目写入你想要引入的样式: 本例引入的样式是一个名为nam.css的文件,该文件只是让页面变蓝,之后运行即 ...

  8. vue动态切换css文件_如何在vue组件中动态的引入css文件?

    问题描述 如标签描述的不准确,请见新直能分支调二浏页器朋代说谅 我的需求是开的接都上的和,近很触是没他电同近很触是没发多套皮肤,打包的时候只加载其中某一种的皮肤(不需要动态换肤),因为css文件过大, ...

  9. 外链引入css有哪些方式_引入CSS样式表的方式有哪些?

    CSS用于修饰网页样式,但是,如果希望CSS修饰的样式起作用,就必须在html档中引入CSS样式表.引入样式表的常用方式有三种,即行内式.内嵌式.外链式,具体介绍如下. 1.行内式 行内式也称内联样式 ...

最新文章

  1. ASP.NET2.0 永恒密码之戒【月儿原创】
  2. windows codeblocks clang 3.7.0
  3. confusion_matrix函数的使用
  4. oracle 创建视图时提示自定义的函数功能名不管用_PCS 7 CFC的常用功能与操作
  5. EMNLP 2020 《MUTANT: A Training Paradigm for Out-of-Distribution Generalization in VQA》论文笔记
  6. 修改Bugzilla的主页图片
  7. JavaScript 检查对象属性
  8. java项目 导出_Java项目的导入和导出
  9. 【LeetCode】剑指 Offer 67. 把字符串转换成整数
  10. Selenium Webdriver 简易教程
  11. 基于Linux和MiniGUI的嵌入式系统软件开发指南(四)
  12. 一行一个链接代码_AI最优论文+代码查找神器:966个ML任务、8500+论文任你选
  13. 485转61850规约转换C语言,61850规约转换器
  14. 小白白红队初成长(2)主动信息收集
  15. 获取p12证书详情,返回证书详情实体
  16. Excel模板与Word模板【java】
  17. 【NLP】第 2 章 访问文本语料库和词汇资源
  18. python图中图_【python】matplotlib数据可视化(7)——图中图
  19. 购买装备 shu420
  20. 右键新建的文档是wps类型的而不是office类型的解决方案

热门文章

  1. 连接服务器框架协议,想要实现:设备通过tcp连接服务器,框架用的是worker或者gateway...
  2. 战地5离线bot模式_战地系列、烂橘子平台下载更新慢咋办?我这里有两个亲测有有效的方式。...
  3. dxp2004鼠标增强工具_26 工具栏的设置
  4. 沃尔玛宣布与TikTok达成直播带货合作?
  5. Golang教程:(十五)指针
  6. java循环do while_Java中for、while、do while三种循环语句的区别介绍
  7. python抓取汤不热视频_你们想要的 Tumblr 爬虫
  8. python埋点测试_测试一面(宇宙条)
  9. 实时获取浏览器滚动条高度(兼容写法)
  10. linux编译时开启宏,【spec】Linux上编译安装的spec文件中的常用路径以及宏变量