问答

react onChange如何优化

作者:admin 2021-06-08 我要评论

class Comp extends Component { ... inputChangeHandler() { //... } render() { return input onChange={this.inputChangeHandler.bind(this)}/ }} 按照官方的...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
class Comp extends Component {
    ...
    inputChangeHandler() {
        //...
    }
    
    render() {
        return <input onChange={this.inputChangeHandler.bind(this)}/>
    }
}

按照官方的说法,这样写每次重新渲染的时候,都会创建一个新的对象,如果组件大量复用,性能会下降。不适用unsafe方法的情况下,如何给处理onChange能保证性能?

###

重复渲染重复创建的时onChange绑定的回调函数

class Comp extends Component {
    ...
    constructor(props) {
        super(props);
        this.setTextInputRef = element => {
           this.textInput = element;
        };
        this.inputChangeHandler =this.inputChangeHandler.bind(this);  
    }
    inputChangeHandler() {
        //...
        //
        let newValue = this.textInput.value();
    }
    
    render() {
        return <input ref={this.setTextInputRef} onChange={this.inputChangeHandler}/>
    }
}

也可以 从事件的event的参数中读取值

class Comp extends Component {
    ...
    constructor(props) {
        super(props);
    }
    inputChangeHandler(event) {
        //...
        //
        console.log(event);
    }
    
    render() {
        return <input onChange={this.inputChangeHandler}/>
    }
}
###

使用hooks可以轻松解决你的问题。

function Comp() {
    ...
    cosnt inputChangeHandler = useCallback(() {
        //...
    }, [])
    
    render() {
        return <input onChange={inputChangeHandler}/>
    }
}
###

像上面说的在构造函数里绑定,或者用箭头函数

class Comp extends Component {
    ...
    inputChangeHandler = () => {
        //...
    }
    
    render() {
        return <input onChange={this.inputChangeHandler}/>
    }
}

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • react onChange如何优化

    react onChange如何优化

  • navicat12恢复nb3文件部分表创建失败

    navicat12恢复nb3文件部分表创建失败

  • 各种语言为什么不使用类作为配置文件,

    各种语言为什么不使用类作为配置文件,

  • 用vue封装一个带搜索框的下拉框组件?

    用vue封装一个带搜索框的下拉框组件?

腾讯云代理商
海外云服务器