按下ReactJS时更改按钮文本

时间:2017-07-05 12:36:36

标签: javascript reactjs

按下按钮时,我想更改按钮的文字。

这就是我想要实现的目标:https://codepen.io/gaearon/pen/xEmzGg?editors=0010,但我无法让我的代码工作(新手)。

class ObjectKeyDisplay extends Component {
  constructor(props) {
    super(props)
    this.state = {
      open: false
    }
    this.handleClick = this.handleClick.bind(this)
  }

  handleClick() {
    this.setState(prevState => ({
      open: prevState.open
    }))
  }

  renderInner() {
      if (!this.props.value) return <td className = "inactive" > < /td>
      if (!this.state.open && this.props.schema.type === 'belongs_to')
      return <td onClick={(e) => this.setState({open: !this.state.open})}>
        <button onClick={this.handleCLick}>
          {this.state.open ? 'OFF' : 'ON'}
        </button>
      </td>
}

这是我的代码,您可能已经看到我想在按下按钮时切换文本OFFON。如果需要,我可以添加更多代码。非常感谢我能得到的所有支持。

2 个答案:

答案 0 :(得分:0)

错误在处理程序中:

this.setState(prevState => ({
  open: !prevState.open
}))

您将其设置为与之前相同的值..使用!bool您可以切换值

另外,条件没有任何意义:

  if (!this.state.open && this.props.schema.type === 'belongs_to')
  return <td onClick={(e) => this.setState({open: !this.state.open})}>
    <button onClick={this.handleCLick}>
      {this.state.open ? 'OFF' : 'ON'}
    </button>
  </td>

这意味着只有满足条件,你的组件才会返回一些东西..

true === (!this.state.open && this.props.schema.type === 'belongs_to')

答案 1 :(得分:0)

以下是您要找的内容:

date_format(datetime,'yyyy-MM-dd HH')