3 Star 9 Fork 1

不凡学院/react-base-demos

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
05-state和setState.html 2.84 KB
一键复制 编辑 原始数据 按行查看 历史
不凡君 提交于 2021-06-18 14:36 . 提交
<!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>
<!-- 注意: 先引入 react基础库,再引入react dom解析库 -->
<script src="lib/react/react.development.js"></script>
<script src="lib/react/react-dom.development.js"></script>
<script src="lib/babel.min.js"></script>
<style>
.danger{
color: red;
}
.large{
font-size: 30px;
}
</style>
</head>
<body>
<!-- state和setState -->
<div id="root"></div>
<script type="text/babel">
class HelloWorld extends React.Component {
// es6的构造函数
constructor(){
// 接用构造函数
super();
console.log('构造函数执行...');
// state用于创建需要变化的值
this.state = {
nowTime: new Date().toString(),
count: 0
}
console.log('this',this);
}
// ()形式声明 是声明到了组件实例对象的原型对象上
componentDidMount(){
console.log('组件挂载完毕...');
// 更新一次count ,检查setState()是否是异步的
// setState()会合并更新,某一次更新如果依赖于上一次的值,可能会有问题
// setState() 可以理解位被动的调用了render(),进而更新页面.
// this.setState({
// count: this.state.count + 1 // 1
// })
// this.setState({
// count: this.state.count + 1 // 2
// })
// 注意: 如果依赖于上一次的state,可以在回调里处理.但是尤其注意,这里需要返回一个{}对象
this.setState((state,props)=>({
count: state.count + 1
}))
this.setState((state,props)=>({
count: state.count + 1
}),()=>{
// 如果在回调里输出,那么会在更新完毕后执行
console.log('this.state.count',this.state.count); // 0?
})
// 尝试修改nowTime
setInterval(()=>{
// 不能直接修改state的值,需要通过setState()
this.setState({
nowTime: new Date().toString()
})
// console.log('this.nowTime',this.state.nowTime);
console.log('this',this);
},1000)
}
componentDidUpdate(){
console.log('组件更新...');
}
componentWillUnmount(){
console.log('组件即将被销毁...');
}
render(){
console.log('render...');
return (
<div>
<h1>声明周期函数和state</h1>
<p>{this.state.nowTime}</p>
<p>count: {this.state.count}</p>
</div>
)
}
}
ReactDOM.render(<HelloWorld />,document.getElementById('root'));
</script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/bufanxy/react-base-demos.git
git@gitee.com:bufanxy/react-base-demos.git
bufanxy
react-base-demos
react-base-demos
master

搜索帮助