012-014 对state的理解,初始化state,react中的事件绑定

对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>
相关推荐
after you1 分钟前
【无标题】
前端·javascript
酷炫码神3 分钟前
Day 6|ES6+ 语法:把现代 JS 写顺手,从解构到 map / filter / reduce
前端·javascript·es6
lemon_sjdk15 分钟前
从一段真实的 Electron IM 前端代码,看高级前端的工程化修养
前端·electron·状态模式·im
IT_陈寒39 分钟前
Vite性能优化完全指南
前端·人工智能·后端
燕落南枝40 分钟前
HTML 表单入门:表单容器、文本框与密码框属性详解
前端·microsoft·html
TYC91 小时前
Mac创建Vue3+TypeScript或者React+TypeScript项目
前端·javascript·typescript
程序员小孔.1 小时前
基于 SpringBoot + UniApp + Vue 的家政服务系统设计与实现
前端·数据库·spring boot·python·docker·微信小程序
Profile排查笔记1 小时前
指纹浏览器 GitHub 项目怎么选?先看仓库交付的是工具、内核还是管理器
前端·人工智能·后端·自动化
风骏时光牛马1 小时前
云原生驱动的分布式高可用架构设计与落地实践
前端
梦曦i1 小时前
uni-app x 专属 Pinia 库正式发布
前端·pinia·uni-app x