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>
相关推荐
shawxlee9 分钟前
vue3+axios挑战最简洁实用的配置封装+接口调用:请求拦截器、响应拦截器、通用请求方法(单个请求/并发请求/下载文件)、统一接口管理
前端·经验分享·vue·接口·axios·api
yuhaiqiang35 分钟前
上线一个人静态网站需要多少钱,难不难?
前端·后端·程序员
宸津-代码粉碎机39 分钟前
Jar热部署进阶实战|修复原生方案OOM与类冲突问题,生产级无BUG优化方案
java·大数据·服务器·开发语言·前端·人工智能·python
To_OC9 小时前
写了三遍 Todo List,我终于搞懂了 React 父子组件到底怎么通信
前端·javascript·react.js
勇往直前plus9 小时前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
咩咩啃树皮10 小时前
第43篇:Vue3计算属性(computed)完全精讲——缓存机制、依赖计算、业务最优解
前端·vue.js·缓存
徐小夕12 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
kyriewen13 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz13 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒14 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端