React的一个bug(暂且当它是bug吧)

Posted zheng-chuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React的一个bug(暂且当它是bug吧)相关的知识,希望对你有一定的参考价值。

先看代码(不知何故的)

import React, { Component } from "react";
import ReactDOM from "react-dom";
class App extends Component {
  constructor(props){
    super(props)
    this.onClick1 = this.onClick1.bind(this);
    this.onClick2 = this.onClick2.bind(this)
  }
  onClick1() {
    alert(‘被点击了‘)
  }
  onClick2() {
    this.btn1.disabled = false
  }
  render() {
    return(
      <div>
        <button ref={node => this.btn1 = node} disabled onClick={this.onClick1}>按钮一</button>
        <button onClick={this.onClick2}>按钮二</button>
      </div>
    )
  }
};
export default App;
ReactDOM.render(<App />, document.getElementById("app"));

按钮一先是被禁用,然后通过按钮二的点击事件直接操作按钮一的ref对象将其解除禁用,但是按钮一上绑定的事件并不能生效

产生的原因(未知)

解决办法(不通过ref操作)

正常可行方法

import React, { Component } from "react";
import ReactDOM from "react-dom";
class App extends Component {
  constructor(props){
    super(props)
    this.onClick1 = this.onClick1.bind(this);
    this.onClick2 = this.onClick2.bind(this);
    this.state = {
      disabled: true
    }
  }
  onClick1() {
    alert(‘被点击了‘)
  }
  onClick2() {
    this.setState({
      disabled: false
    })
  }
  render() {
    return(
      <div>
        <button disabled={this.state.disabled} onClick={this.onClick1}>按钮一</button>
        <button onClick={this.onClick2}>按钮二</button>
      </div>
    )
  }
};
export default App;
ReactDOM.render(<App />, document.getElementById("app"));

以上是关于React的一个bug(暂且当它是bug吧)的主要内容,如果未能解决你的问题,请参考以下文章

mybatis limit 数据重复及遗漏

Bug生命周期:遗留bug管理

这几天bug多,自我检讨一下

网页加载慢,有哪些原因?如何定位一个bug?

React16.7 hooks之setTimeout引发的bug小记

Actionscript 3,flexSDK,当它超过flash阶段时阻止鼠标滚轮滚动