对state的理解
- state是组件对象最重要的属性,值时对象(可包含多个key-value的组合)
- 组件被称为"状态机",通过更新组件的state来更新对应的页面显示(重新渲染组件)
1) 组件render方法中的this 为组件实例对象
2) 组件自定义方法中的this为undefined,如何解决?
a. 强制绑定this: 通过函数对象的bind()
b. 箭头函数
3) 状态数据,不能直接修改或更新
初始化state
html
<!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>
<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/babel">
//1.创建组件
class Weather extends React.Component {
constructor(props){
super(props)
this.state={isHot:false}
}
render() {
console.log(this);
return <h1>今天天气很{this.state.isHot ? '炎热' : '凉爽'}</h1>
}
}
//2.渲染组件到页面
ReactDOM.render(<Weather/>, document.getElementById('test'))
</script>
</body>
</html>

react中的事件绑定
原生事件绑定
html
<!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>
<button id="btn1">button 1</button>
<button id="btn2">button 2</button>
<button onclick="demo()">button 3</button>
<script type="text/javascript">
const btn1 = document.getElementById('btn1')
btn1.addEventListener('click', () => {
alert('按钮1被点击了!')
})
const btn2 = document.getElementById('btn2')
btn2.onclick = () => {
alert('按钮2被点击了!')
}
function demo() {
alert('按钮3被点击了!')
}
</script>
</body>
</html>

react的事件绑定
html
<!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>
<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/babel">
//1.创建组件
class Weather extends React.Component {
constructor(props){
super(props)
this.state={isHot:false}
}
render() {
return <h1 onClick={demo}>今天天气很{this.state.isHot ? '炎热' : '凉爽'}</h1>
}
}
//2.渲染组件到页面
ReactDOM.render(<Weather/>, document.getElementById('test'))
function demo() {
alert('按钮3被点击了!')
}
</script>
</body>
</html>
