来源:未知 时间: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