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>
相关推荐
IT_陈寒1 小时前
Redis内存暴涨,没想到是AOF重写捣的鬼
前端·人工智能·后端
ikoala1 小时前
让 Codex 自己查账:一个省 token 的小技巧
前端·后端·ai编程
ikoala1 小时前
AI 写页面像说明书,修 Bug 像贴膏药?把这两句话写进 AGENTS.md
前端·javascript·ai编程
去伪存真4 小时前
AI Agent Harness 深度测评与技术选型实战
前端·agent
FRing036 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
疯华整猫9 小时前
被杀掉之后:我把 Android 的「唤起 + 常驻」重做了一遍
前端·面试·架构
IT_陈寒11 小时前
Java开发实战:从入门到精通
前端·人工智能·后端
风骏时光牛马11 小时前
生成一个AI转岗经历标题,只需要一个标题,不需要其他的任何文本。
前端
Csvn21 小时前
Monorepo
前端
Csvn21 小时前
流水线
前端