美文网首页React
React 中的响应式设计思想和事件绑定

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

作者: 泡杯感冒灵 | 来源:发表于2022-01-27 11:35 被阅读0次
在react中如何定义数据?
  • 在js里,一个类,一定会有一个构造函数constructor,当我们去创建这个类的实例的时候,这个constructor构造函数,是最优先执行的函数。
class TodoList extends Component {
    constructor(props){
       // TodoList组件 继承了react里的 Component组件,super(props)指的是就是调用Component这个父类的构造函数一次。
        super(props)
    }
}
  • react的数据,要定义在状态this.state里,具体写法
class TodoList extends Component {
    constructor(props){
        super(props)
      
        this.state = {
            inputValue:'hello',
            list:[]
        }
    }
}
  • 如果我们想让input框的值,由我们定义的数据决定,可以这么写. value后边跟的是我们定义的变量。
    注意:jsx语法中,使用js表达式,或者js变量,那么必须要写在大括号中
render(){
        return (
            <Fragment>
                <div>
                    <input 
                        value={this.state.inputValue}
                    />
                    <button>提交</button>
                </div>
                <ul>
                    <li>英文</li>
                    <li>数学</li>
                </ul>
            </Fragment>
        )
    }
react事件绑定的语法。
  • 原生事件绑定
<input  
            value={this.state.inputValue}
            onchange="xxxx"
/>
  • react事件绑定,on后边首字母大写
<input  
            value={this.state.inputValue}
            onChange={this.handleInputChange}
/>
  • 监听事件,绑定事件处理程序。这个函数,我们先定义一下。这个时候,我们运行的时候,发现报错,this找不到。
    handleInputChange(e){
        console.log(this)
        console.log(e.target.value)
        this.state.inputValue = e.target.value;
    }
  • 改变函数里的this指向,让this指向组件本身。我们可以借助ES6里 bind函数,来改变handleInputChange函数里的this指向,具体做法如下
<input 
          value={this.state.inputValue}
          onChange={this.handleInputChange.bind(this)}
 />
  • 但是上边的代码怡然不能让我们实现输入改变input框的值。因为我们是直接通过给 this.state.inputValue f赋值的方式,去改变它的值,这是不行的,react提供了 setState方法来改变state状态里的变量值
    handleInputChange(e){
        this.setState({
            inputValue:e.target.value
        })
    }
列表循环
  • 通常是使用数组的map方法,注意生成的每一项都要加key
<ul>
                    {
                        this.state.list.map((item,index)=>{
                            return (
                                <li key={index} 
                                    onClick={this.handleItemDelete.bind(this,index)}
                                >
                                    {item}
                                </li>
                            )
                        })
                    }
                </ul>
  • 绑定的事件处理函数,如果需要额外传参,可以通过bind
    handleItemDelete(index){
        // 这里通过展开运算符,拷贝一份list数组
        const list = [...this.state.list];
        list.splice(index,1);
        this.setState({
            list:list
        })
    }
react不允许直接修改 state
// immutable
this.state.list.splice(index,1)

总结
  1. state负责存储组件里的数据。
  2. jsx语法里使用变量或者表达式,要加{}。
  3. 事件绑定的时候,需要通过bind(this)对函数的作用域进行变更。
  4. 如果想改变数据内容,不能直接改变,需要通过setState函数进行变更。

相关文章

  • react学习笔记

    react学习 index.js jsx语法 响应式设计思想和事件绑定 所有的数据在state(状态)中定义 想要...

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

    在react中如何定义数据? 在js里,一个类,一定会有一个构造函数constructor,当我们去创建这个类的实...

  • (React)绑定事件(this的使用)

    前言 React开发中,给按钮添加点击事件,响应用户的点击 一、绑定事件 按照上述的方式,在事件绑定的方法内部,是...

  • 基于React.js构建购物系统(前端部分一)

    React.js的编程思想 1.virtural dom + 单向数据绑定使得React的渲染和响应较快。2.组件...

  • react事件、生命周期

    事件 react中、原生事件绑定丢失this,绑定this写法 jsx中onClosed={ this.handl...

  • React事件处理

    React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑定属性的命名采用驼峰式...

  • React 面试题整理

    一、react 和 vue 的区别是什么? 1、vue是响应式的数据双向绑定系统,而react是单向数据流,没有双...

  • React事件处理笔记一

    React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同:React 事件绑定属性的命名采用驼峰式写...

  • 事件

    React 元素的事件处理和 DOM元素的很相似。但是有一点语法上的不同: React事件绑定属性的命名采用驼峰式...

  • React官网学习实践 - 事件处理

    React 元素的事件处理和 DOM元素的很相似。但是有一点语法上的不同: React事件绑定属性的命名采用驼峰式...

网友评论

    本文标题:React 中的响应式设计思想和事件绑定

    本文链接:https://www.haomeiwen.com/subject/dzpnhrtx.html