React.JS 的当前版本是 V18.0.0(2022 年 4 月)。
首次向公众发布 (V0.3.0) 于 2013 年 7 月。
React.JS 于 2011 年首次用于 Facebook 的 Newsfeed 功能。
Facebook 软件工程师 Jordan Walke 创建了它。
js代码库
下载地址<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 准备好一个容器 -->
<div id="test"></div>
<!-- 引入 React 核心库 -->
<script src="../js/react.development.js"></script>
<!-- 引入 react-dom 用于支持 react 操作 DOM -->
<script src="../js/react-dom.development.js"></script>
<!-- 引入babel:
1. ES6 ==> ES5
2. jsx ==> js
-->
<script src="../js/babel.min.js"></script>
<script type="text/babel">
// 1. 创建虚拟 DOM
const VDOM = <h1>Hello,React</h1>
// 2. 渲染到页面中的指定 DOM
// ReactDOM.render(虚拟DOM,真实DOM)
ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>
react.js
:React核心库。react-dom.js
:提供操作DOM的react扩展库。babel.min.js
:解析JSX语法代码转为JS代码的库。<!-- 引入React核心库 -->
<script src="../js/react.development.js"></script>
<!-- 操作dom -->
<script src="../js/react-dom.development.js"></script>
<!-- 引入babel ES6==>ES5 JSX==>JS -->
<script src="../js/babel.min.js"></script>
<script type="text/babel">
const vdom = React.createElement('h1', { id: 'title' }, 'hello,react')
// ReactDOM.render(虚拟dom,真实Dom)
ReactDOM.render(vdom, document.getElementById('test'))
</script>
<script type="text/babel">
const VDOm = <h1>Hello,react</h1>
// ReactDOM.render(虚拟dom,真实Dom)
ReactDOM.render(VDOm, document.getElementById('test'))
</script>
<script type="text/babel">
// 1. 创建虚拟 DOM
const VDOM = (
<h1>Hello,
<span>React</span>
</h1>
)
// 2. 渲染到页面中的指定 DOM
// ReactDOM.render(虚拟DOM,真实DOM)
ReactDOM.render(VDOM,document.getElementById('test'))
const TDOM = document.getElementById('demo')
// console.log(typeof VDOM) // Object
// console.log(VDOM instanceof Object) // true
console.log('虚拟DOM',VDOM)
console.log('真实DOM',TDOM)
// 调试
debugger
</script>
语法扩展
,首先运用于React中,其格式比较像是模版语言
,但事实上完全是在JavaScript内部
实现的。元素是构成React应用的最小单位
,JSX就是用来声明React当中的元素
。描述用户界面
,但React并不强制要求使用JSX ,而JSX也在React之外的框架得到了广泛的支持,包括Vue.js ,Solid 等JavaScript XML
JS扩展语法
: JS + XML本质是React.createElement(component, props, …children)方法的语法糖简化创建
虚拟DOM
字符串
, 也不是HTML/XML标签
JS对象
<
开头的代码, 以标签的语法解析: html同名标签转换为html同名元素, 其它标签需要特别解析js表达式
必须用{ }
包含babel.js
的作用
解析JSX代码
, 需要babel转译
为纯JS的代码才能运行type="text/babel
", 声明需要babel来处理<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.title {
color: aqua;
}
</style>
<body>
<div id="test">
</div>
<!-- 引入React核心库 -->
<script src="../js/react.development.js"></script>
<!-- 操作dom -->
<script src="../js/react-dom.development.js"></script>
<!-- 引入babel ES6==>ES5 JSX==>JS -->
<script src="../js/babel.min.js"></script>
<script type="text/babel">
let mydata = 'student';
let data = ['hhz', 'ycc', 'wsh']
let myId = 'IT'
let img = "https://tse1-mm.cn.bing.net/th/id/OIP-C.x0O2Az9JvDMbgiyyU5jNCQHaDm?w=308&h=170&c=7&r=0&o=5&pid=1.7"
function txt() {
const vdom = (
<div>
<h1 className="title" id={myId}>Hello,
<span>{mydata}</span>
<span>{new Date().toLocaleTimeString()}</span>
</h1>
<img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.x0O2Az9JvDMbgiyyU5jNCQHaDm?w=308&h=170&c=7&r=0&o=5&pid=1.7" />
<ul>
{
data.map((item, index) => {
return <li key={index}>{item}</li>
})
}
</ul>
</div>
)
// ReactDOM.render(虚拟dom,真实Dom)
ReactDOM.render(vdom, document.getElementById('test'))
}
setInterval(txt, 1000)
</script>
</body>
</html>
<script type="text/babel">
let data=["123","222"]
function MyComponent(props) {
console.log(this)//这里的this是undefined,因为babel编译,开启了严格模式
console.log(props, '11111')
return <h2>我是函数定义的组件(适用于简单组件的定义){props.name}</h2>
}
// ReactDOM.render(虚拟dom,真实Dom)
ReactDOM.render(<MyComponent name={data} />, document.getElementById('test'))
</script>
执行ReactDOM.render()方法之后,发生了什么
1.React解析了组件标签,找到了对应的组件
2.发现这个组件是一个函数定义的,随后调用该函数,生成一个虚拟dom
3.最后将虚拟dom转化成为真实dom,呈现在页面中
<script type="text/babel">
// 1. 创建一个类式组件
class MyComponent extends React.Component{
// render方法是放在原型上的
// render中的this是谁? -- 实例对象 <===> MyComponent组件实例对象
render(){
console.log('render中的this',this)
return <h2>我是用类定义的组件(适用于【复杂组件】的定义)</h2>
}
}
// 2. 渲染到页面中的指定 DOM
// ReactDOM.render(虚拟DOM,真实DOM)
ReactDOM.render(<MyComponent />,document.getElementById('test'))
let c = new MyComponent()
console.log(c)
</script>
类式组件执行过程?
React 解析了组件标签,找到对应的组件
发现这个组件是一个类定义的,随后new出来一个实例对象,并通过该实例调用原型上的render方法
将render()返回的内容生成了一个虚拟DOM
最后将虚拟DOM转化为真实DOM,呈现在页面中;
1. 组件名必须首字母大写 2. 虚拟DOM元素只能有一个根元素 3. 虚拟DOM元素必须有结束标签
以上就是React入门的所有东西。希望本篇文章能够帮助到你,不懂得可以评论区或者私信问我,我也会一 一解答。谢谢观看!
我的其他文章:https://blog.csdn.net/m0_60970928?type=blog