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>
相关推荐
EdgeOne边缘安全加速平台7 分钟前
EdgeOne Web 防护×AI 升级:让 AI 既参与攻击识别,也参与误报纠错
前端·人工智能·腾讯云·edgeone
nuIl7 分钟前
实现一个 Coding Agent(6):并行工具调用
前端·ai编程·cursor
Rain50912 分钟前
2.1 Nest.js 项目初始化与模块化架构
开发语言·前端·javascript·后端·架构·数据分析·node.js
cjp56016 分钟前
009. ASP.NET WEB API 用户关联esp32设备
前端·后端·asp.net
Insseals36 分钟前
因斯特浮动模块快速接头✨五大核心优势
前端
沐土Arvin1 小时前
港澳台行政区域json
前端
程序员鱼皮1 小时前
我花 300 块,让 Claude Fable 5 开发桌面 APP,值么?
前端
William_Xu1 小时前
JavaScript 并发控制
前端
拾年2751 小时前
从零手写 Ajax:用原生 XHR 搭建前后端交互全流程
前端·javascript·ajax
光影少年1 小时前
懒加载与分包:React.lazy + Suspense
前端·react.js·掘金·金石计划