React初始(1)
React是2013年,Facebook开源的JavaScript框架
React的特点:
- 声明式编程
- 组件化开发
- 多平台适配
React开发依赖
开发React必须依赖三个库:
- react:包含react所必须的核心代码
- react-dom:react渲染在不同平台所需要的核心代码
- babel:将jsx转换成React代码的工具
引入React依赖
方式1:cdn引入
方式2:下载到本地引入
方式3:npm下载
初步使用react
<body>
<div id="app"></div>
<!-- react依赖 -->
<!-- crossorigin的作用是远程的文件里面的错误在本地也能显示出来 -->
<script src="https://unpkg.com/react@17/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- 编写react代码 type格式必须是text/babel 作用是让babel解析jsx语法 -->
<script type="text/babel">
let message = "Hello World";
// ReactDom.render('渲染内容(也可以是组件)',要挂载的对象(挂载到那个html元素)); //默认情况下渲染的内容会覆盖原来的内容
// <h2></h2>:jsx
ReactDOM.render(<h2>{message}</h2>, document.getElementById('app')); // ReactDOM里面有个函数render
// 通过{}引入外部变量或者表达式和vue不同的是vue是用{{}}
</script>
</body>
<body>
<div id="app"></div>
<!-- react依赖 -->
<!-- crossorigin的作用是远程的文件里面的错误在本地也能显示出来 -->
<script src="https://unpkg.com/react@17/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- 编写react代码 type格式必须是text/babel 作用是让babel解析jsx语法 -->
<script type="text/babel">
let message = "Hello World";
function btnClick() {
message = "Hello React";
render();
}
// 这里和vue一样,最外部必须是一个根元素
function render() {
ReactDOM.render(
<div>
<h2>{message}</h2>
<button onClick={btnClick}>按钮</button>
</div>,
document.getElementById('app')
);
}
//点击后数据改了,但是页面并没有发生改变,这里要重新渲染dom
render();
</script>
</body>
react点击修改文字
<!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="app"></div>
<!-- react依赖 -->
<script src="https://unpkg.com/react@17/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- 编写react代码 type格式必须是text/babel 作用是让babel解析jsx语法 -->
<script type="text/babel">
// 封装组件
class App extends React.Component {
// 在类里面定义属性
constructor() {
super(); // 必须调用一下super
// this.message = "Hello World";
this.state = {
message: "Hello World"
}
}
// 组件里面的内容渲染render里面
render() {
// return <h2>Hello</h2> 如果只有一个根可以不用加括号,如果有多个可以加,这里的()没别的含义,仅代表它们是一个整体
return (
<div>
<h2>{this.state.message}</h2>
<button onClick={this.btnClick.bind(this)}>改变文字</button>
</div>
)
}
btnClick() {
// console.log(this);
// this.message = "Hello React"; // 不行!! 不要手动去改
this.setState({
message: "Hello React"
});
// this.state里面定义数据,通过this.setState去改变数据
}
}
// 渲染组件
ReactDOM.render(<App />, document.getElementById('app')); // 组件名首字母必须大写
</script>
</body>
</html>
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭