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>
相关推荐
AlienZHOU38 分钟前
DeepSeek Harness 插件:HTML 实时可视化编辑
前端·agent·deepseek
剪刀石头布啊3 小时前
javascript手动实现继承
前端
Elias不吃糖3 小时前
Langfuse 入门:Trace、Prompt、Dataset、Experiment、Evaluator
前端·python·prompt·langfuse
vipbic4 小时前
一个前端的 9 天重构:我是怎么用 Codex 重做航栈的
前端·javascript·后端
Eason_Lou5 小时前
【无标题】
前端·vue.js·html
_codemonster6 小时前
npm run dev 是在开发模式运行,怎么在生产环境运行
前端·npm·node.js
kyriewen6 小时前
我受够了复制报错去问 AI,花一下午给控制台做了个调试助手
前端·javascript·ai编程
IT_陈寒7 小时前
Redis的DEL命令竟然没删掉数据?我踩的这个坑你得知道
前端·人工智能·后端
anOnion7 小时前
构建无障碍组件之Menu and Menubar Pattern
前端·html·交互设计