• React中的响应式设计思想和事件绑定


    以前我们是直接操作dom的形式,而react的设计思想完全不同,react是一个响应式框架。react强调我们不要直接操作dom,我们操作的是数据,通过数据的变化,react会感知到数据的变化,自动的帮我们生成dom。因此,我们在写代码的时候,再也不用关注dom相关的操作,只需要关注数据层的就可以了。

    下面定义了一个TodoList 组件

    import React, {Component, Fragment} from 'react';
    
    class TodoList extends Component {
        constructor(props) {
            super(props);
            this.state = {
                inputValue: 'hello',
                list: []
            };
        }
        render() {
            return (
                <Fragment>
                    <div>
                        <input 
                            value={this.state.inputValue}
                            onChange={this.handleInputChange.bind(this)}
                        />
                        <button>提交</button>
                    </div>
                    <ul>
                        <li>学习英语</li>
                        <li>学习数学</li>
                    </ul>
                </Fragment>
            );
        }
        handleInputChange(e) {
            this.setState({
                inputValue: e.target.value
            });
        }
    }
    export default TodoList;

    在 App.js 中引入TodoList 组件

    import React,{Component} from 'react';
    import TodoList from './TodoList';
    
    class App extends Component {
      render(){
        return (
          <div>
            <TodoList />
          </div>
        );
      }
    }
    export default App;

    1. 在react 中如何定义数据呢?TodoList 这个组件,也是一个类,在 js 里面,一个类就一定会有一个 constructor 构造函数。当我们使用这个组件时, constructor是优于其他任何函数最先被执行的一个函数。react里面定义数据,我们需要把数据定义在状态里。this.state 就是这个组件的状态,这个状态里面可以存很多东西。

    2. 调用父类的构造函数,super(props); 这是固定写法,也就是TodoList继承了的React中的Component组件,所以要在创建TodoList的时候,调用父类构造函数一次。

    3. 我们把input里的value与状态里的inputValue相关联,如果状态里的inputValue值变了,react会自动感知到,然后赋值给value。接着,我们需要给input绑定一些事件,比如onChange 去监听其变化。onChange 会接收一个事件对象e, 通过e.target.value 获取到要输入的内容。将要输入的内容赋值给状态里的inputValue,inputValue值发生改变,react 自动将inputValue值赋值给value。调用函数,需要用bind函数来改变this指向

    4. 怎样改变 state 中的 inputValue 的值呢?首先要记住,不能通过this.state.inputValue = e.target.value 这种方式去改变它的值。react 给每个组件都提供了一个setState方法。

  • 相关阅读:
    element表格单元格显示选择器
    echarts自适应大小
    修改element默认样式
    vhtml识别换行(\n)
    element table表格点击单元格实现编辑+表格高度自适应
    Windows 11 彻底关闭 Windows Defender 降低内存占用,杀掉 Antimalware Service Executable 进程
    华硕 ASUS TUF GAMING B560MPLUS WIFI 主板升级BIOS,启用 TPM2.0 安装 Windows 11
    《读书与做人》 季羡林 国际文化出版公司
    《如何有效阅读一本书》奥野宣之 江西人民出版社
    《把时间当作朋友》 李笑来 电子工业出版社
  • 原文地址:https://www.cnblogs.com/ly2019/p/11212217.html
Copyright © 2020-2023  润新知