网站地图    收藏   

主页 > 前端 > react >

react不要使用内联函数定义

来源:未知    时间:2024-05-13 19:33 作者:小飞侠 阅读:

[导读] 在使用内联函数后,render方法每次运行时都会创建该函数的新实例( 函数是引用类型,比较内存地址是否相等,新实例内存地址肯定不一样 ), 导致React在进行 Virtual DOM对比时,新旧...

在使用内联函数后,render方法每次运行时都会创建该函数的新实例(函数是引用类型,比较内存地址是否相等,新实例内存地址肯定不一样),

导致React在进行 Virtual DOM对比时,新旧函数比对不相等,

导致 React 总是为元素绑定新的函数实例,而旧的函数实列又要交给垃圾回收器处理。

错误代码:

import React, { Component } from 'react'

export default class App extends Component {
constructor() {
super()
this.state = {
inputValue: "1"
}
}
render() {
console.log('render')
return (
<div>
<input value={this.state.inputValue} onChange={e => {this.setState({inputValue: e.target.value})}} />
</div>
)
}
}

正确代码:

注意:这是类实列,函数式组件可以用 useFunction hooks

...
export default class App extends Component {
    constructor() {
        super()
        this.state = {
            inputValue: "1"
        }
    }
    // 这么写可以不用.bind改变this指向
    // setVal = (e) => {
    //     this.setState({inputValue: e.target.value})
    // }
    setVal(e) {
        this.setState({inputValue: e.target.value})
    }
    render() {
        console.log('render')
        return (
        <div>
            <input value={this.state.inputValue} onChange={this.setVal.bind(this)} />
        </div>
        )
    }
}
...

以上就是react不要使用内联函数定义全部内容,感谢大家支持自学php网。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论