禁用反应输入

时间:2017-11-14 20:41:16

标签: javascript reactjs input

我有一个带有从props传播的禁用布尔值的输入。我发现在设置了禁用变量的情况下,即使它是真的,我也无法输入输入。但是,如果我按住鼠标并在键入时将其保持下来,我可以输入输入。

当我将组件呈现为受控和不受控制时,会发生这种情况。

解决问题的唯一方法是删除disabled或设置disabled={false} - 但我需要将其修改。

这是我的意见:

  class DashboardWidgetTitle extends React.Component {

    constructor(props) {
      super(props);
      this.state = {};
      this.state.title = props.widget.getTitle();
    }

    render () {
      return <input className="title"
                    value={this.state.title}
                    disabled={!this.props.isEditMode}
                    onChange={this._onInputChange.bind(this)}/>
    }

    _onInputChange(e) {
      logit("input change");
      this.setState({title: e.target.value});
    }

  }

谢谢!

编辑:额外信息 -

  • 这用于ReactGridLayout
  • 的实现中的小部件
  • 组件由小部件呈现,小部件由反应网格布局的实现呈现,&#34;仪表板&#34;。该仪表板具有isEditMode作为通过Angular中的切换在外部进行更改的状态(我们在Angular中使用React)。
  • 如果我切换标签并返回,焦点仍然存在。否则,每当我输入一个字母时,输入都会变得没有焦点。
  • 输入不应该被禁用,它只是有焦点问题 - 但是删除disabled属性或将其设置为静态变量,问题并非如此。保持不变。
  • 当我将禁用切换切换为isEditMode而不是!isEditMode时,一切正常。似乎在ReactGridLayout的可拖动/可调整大小部分上有一个onclick导致了一些问题。

1 个答案:

答案 0 :(得分:1)

我的问题就在这里描述:https://github.com/STRML/react-grid-layout/issues/615

我自己的研究不好的错误。