【问题标题】:Make button disable using react failed使用反应禁用按钮失败
【发布时间】:2017-04-09 10:33:54
【问题描述】:
render(){
  const { loading } = this.state;
  return(
    <div>
      {!loading ? <input disabled type='text' /> : <input type='text' />}
    </div>
  )
}

上面的 jsx 有意义吗?我没有收到任何编译错误,只是我收到了来自反应的警告Unknown propdisabbedon &lt;input&gt; tag.

如何正确更改按钮的属性以禁用?想象一下,如果我的输入有很多 CSS 类,我是否也需要重复它们?我觉得这是多余的。

【问题讨论】:

  • 请注意,您实际上是在渲染一个文本字段。 ??????

标签: javascript reactjs ecmascript-6


【解决方案1】:

您不需要在input 标记上进行条件渲染。您可以通过以下方式进行操作

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      loading: true
    }
  }
  render(){
    const { loading } = this.state;
    return(
      <div>
        <input disabled={loading} type='text'/>
      </div>
    )
  }
}

ReactDOM.render(<App />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

【讨论】:

  • 请注意,不鼓励使用constructor 设置初始state,此外,当您使用super 时,您也应该将...props 传递给它,以防万一在相同的上下文中使用this.props。最好使用类属性语法。 (state = { ...stuff })
  • @FezVrasta 我同意你的观点,应该将 props 传递给构造函数和 super ,否则可能会导致潜在的错误。但是为什么不鼓励设置状态构造函数。见facebook.github.io/react/docs/…
  • 该文档使用了constructor,因为它更普遍,但由于我的解释,它会导致更多的错误。您可以在类属性中引用 this.props 并避免任何 super 怪癖。 gist.github.com/FezVrasta/630e92170d20618fc35d55c83fefcd2d
猜你喜欢
  • 2016-08-15
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2013-06-09
  • 2017-08-07
  • 1970-01-01
相关资源
最近更新 更多