Hello World
直接在页面上使用React,引用下面的JS
<!-- React的核心库,与宿主环境无关:可以用在手机端,客户端 -->
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<!-- 依赖核心库,将核心的功能与页面结合 -->
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
React.createElement
创建一个React元素,称作虚拟DOM,本质上是一个对象,就是一个普通js对象;
- 参数1:元素类型,如果是字符串,一个普通的HTML元素
- 参数2:元素的属性,一个对象
- 后续参数:元素的子节点
ReactDOM负责把react元素渲染到页面上
//创建一个span元素
var span = React.createElement("span", {}, "一个span元素");
//创建一个h1元素(一个普通的js对象)
var h1 = React.createElement("h1", {
title: "第一个React元素"
}, "Hello", "World", span);
// 将h1元素渲染到页面中(ReactDOM:将h1 js对象转换为真正的dom对象)
ReactDOM.render(h1, document.getElementById("root"));
JSX
JS的扩展语法,需要使用babel进行转义。
JSX的本质是一个语法糖,可以让我们更加简洁的书写代码,最终还是需要通过createElement来运行
// babel:编译jsx
<script src="https://unpkg.com/babel-standalone@6/babel.min.js">
</script>
案例:
<div id="root"></div>
<!-- React的核心库,与宿主环境无关 -->
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<!-- 依赖核心库,将核心的功能与页面结合 -->
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<!-- 编译JSX -->
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">
//创建一个span元素
// var span = React.createElement("span", {}, "一个span元素");
// var span = <span>一个span元素</span>
//创建一个H1元素
// var h1 = React.createElement("h1", {
// title: "第一个React元素"
// }, "Hello", "World", span);
// var h1 = <h1 title="第一个React元素">Hello World <span>一个span元素</span></h1>;
// console.log(h1);
ReactDOM.render(<h1 title="第一个React元素">Hello World <span>一个span元素</span></h1>, document.getElementById("root"));
</script>