<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>切换天气</title>
</head>
<body>
<div id="test"></div>
<!-- 引入 react 核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入 react-dom,用于支持 react 操作DOM -->
<script
type="text/javascript"
src="../js/react-dom.development.js"
></script>
<!-- 引入babel, 用于将 jsx 转为 js -->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!-- 此处一定要写babel -->
<script type="text/babel">
// 1、创建组件
class Weather extends React.Component {
// 构造器调用几次?—— 1次
constructor(props) {
console.log('constructor')
super(props)
// 借用构造器初始化 状态
this.state = {
isHot: false,
wind: '微风',
}
// bind 改变 this 的指向并且返回一个新函数
this.changeWeather = this.changeWeather.bind(this) // 解决类中方法局部严格模式导致 this 为 undefined 问题
}
// render调用几次?—— 1 + n 次, 1 是初始化的那次, n 是状态更新的次数
render() {
console.log('render')
// 读取状态
let { isHot, wind } = this.state
console.log(this, this.state)
return (
<h1 onClick={this.changeWeather}>
今天天气很{isHot ? '炎热' : '凉爽'}, {wind}
</h1>
)
}
// changeWeather调用几次?—— 点几次调几次
changeWeather() {
// changeWeather 放在那里?—— Weather 的原型对象,供实例使用
// 由于changeWeather 是作为 onClick 的回调,所以不是通过实例调用的,是直接调用
// 类中的方法 默认开启了局部的严格模式,所以 changeWeather 中的 this 是 undefined
// console.log('点击文字', this) // 为什么this 是 undefined?——类中的方法 默认开启了局部的严格模式,所以 changeWeather 中的 this 是 undefined
// 获取原来的 isHot 的值
let { isHot } = this.state
// 严重注意:状态(State)里面的数据不能直接更改, 要借助一个内置的 API 去更改
// this.state.isHot = !isHot // 这行就是直接更改!这是错误写法
// 严重注意: 状态(state)必须通过 setState 进行更改,且更新是一种合并,不是替换
this.setState({ isHot: !isHot })
console.log(isHot, this)
}
}
// 2、渲染组件到页面
// ReactDOM.render(组件,容器)
ReactDOM.render(<Weather />, document.getElementById('test'))
</script>
</body>
</html>
qiao若huan喜
- 粉丝: 7217
- 资源: 16
最新资源
- 串联式、并联式、混联式混合动力系统simulink控制策略模型(串联式、并联式、混联式每个都是独立的需要单独说拿哪个,默认是混联式RB) 有基于逻辑门限值、状态机的规则控制策略(RB)、基于等效燃油
- 法码滋.exe法码滋2.exe法码滋3.exe
- python-geohash-0.8.5-cp38-cp38-win-amd64
- Matlab根据flac、pfc或其他软件导出的坐标及应力、位移数据再现云图 案例包括导出在flac6.0中导出位移的fish代码(也可以自己先准备软件导出的坐标数据及对应点的位移或应力数据,可根据需
- 拳皇97.exe拳皇972.exe拳皇973.exe
- 捕鱼达人1.exe捕鱼达人2.exe捕鱼达人3.exe
- 医疗骨折摄像检测29-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma数据集合集.rar
- ks滑块加密算法与源代码
- 医护人员检测23-YOLOv8数据集合集.rar
- 1.电力系统短路故障引起电压暂降 2.不对称短路故障分析 包括:共两份自编word+相应matlab模型 1.短路故障的发生频次以及不同类型短路故障严重程度,本文选取三类典型的不对称短路展开研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈