用于构建用户界面的 JavaScript 库
React 使创建交互式 UI 变得轻而易举。为你应用的每一个状态设计简洁的视图,当数据改变时 React 能有效地更新并正确地渲染组件。
告诉计算机我们要什么 ---结果
以声明式编写 UI,可以让你的代码更加可靠,且方便调试。
可以通过 CDN 获得 React 和 ReactDOM 的 UMD 版本。
<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>
上述版本仅用于开发环境,不适合用于生产环境。压缩优化后可用于生产的 React 版本可通过如下方式引用:
<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
let h1 = React.createElement(
"h1",
null,
"这里是h1标签的子级,可以是标签,也可以是内容,不写就是空标签"
);
ReactDOM.render(
"这是第一个参数的内容",
document.querySelector("#app"),
()=>{
console.log("渲染成功")
}
);
如果你通过 CDN 的方式引入 React,建议使用crossorigin
同时建议
你验证使用的 CDN 是否设置了 Access-Control-Allow-Origin: * HTTP 请求头
这样能在 React 16 及以上的版本中有更好的错误处理体验。
babel-standalone.js:在浏览器中处理 JSX
下载地址:https://cdn.bootcss.com/babel-standalone/6.26.0/babel.min.js
引入完成后要在script中加入type属性
<script type="text/babel">
...
</script>
let str = "这是str,应该是用来演示插值表达式的!!!"
ReactDOM.render(
<header>
<h1>{str}</h1>
<p>这是用JSX来渲染的</p>
</header>,
document.querySelector("#app"),
()=>{
console.log("渲染成功")
}
);
插值只能执行表达式,不能执行语句
)
因为我们插值不支持语句,所以在做条件输出时只能支持一下三种方式
ReactDOM.render(
<header>
<h1>{true ? "成立" : "不成立"}</h1>
<p>{false || '这是用JSX来渲染的'}</p>
<div>{true && "正确"}</div>
</header>,
document.querySelector("#app"),
()=>{
console.log("渲染成功")
}
);
列表输出分为两种方式
ReactDOM
里的element
并写成函数 let data = [
"内容1",
"内容2",
"内容3",
"内容4"
]
function toData(){
let arr = [];
data.forEach(item=>{
arr.push(<li>{item}</li>)
});
return arr;
}
ReactDOM.render(
<header>
{toData()}
</header>,
document.querySelector("#app"),
()=>{
console.log("渲染成功")
}
);
let data = [
"内容1",
"内容2",
"内容3",
"内容4"
]
ReactDOM.render(
<ul>
{
data.map(item=>{
return <li>{item}</li>
})
}
</ul>,
document.querySelector("#app"),
()=>{
console.log("渲染成功")
}
);
必须有,且只有一个顶层的包含元素 - React.Fragment
let {Fragment} = React;
ReactDOM.render(
<Fragment>
<div class="box" style={style}></div>
</Fragment>,
document.querySelector('#main')
)
我们上述说了reactDOM内的element不可以写成字符串,具体原因为:为了有效的防止 XSS 注入攻击,React DOM 会在渲染的时候把内容(字符串)进行转义,所以字符串形式的标签是不会作为 HTML 标签进行处理的