在 React 中来回单击按钮时更改状态?

Use*_*und 5 state onclick reactjs

所以我知道如何在单击按钮时更改状态,但是当再次单击按钮时,如何将新状态更改回以前的状态?

Don*_*ody 6

您可以切换状态。

这是使用组件的示例:

class ButtonExample extends React.Component {
  state = { status: false }

  render() {
    const { status } = this.state;
    return (
      <button onClick={() => this.setState({ status: !status })}>
        {`Current status: ${status ? 'on' : 'off'}`}
      </button>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这是一个使用钩子的例子(在 v16.8.0 中可用):

const ButtonExample = () => {
  const [status, setStatus] = useState(false);

  return (
    <button onClick={() => setStatus(!status)}>
      {`Current status: ${status ? 'on' : 'off'}`}
    </button>
  );
};
Run Code Online (Sandbox Code Playgroud)

您可以将'on'和更改为'off'您想要切换的任何内容。希望这可以帮助!

  • 你好像不高兴。问题是两句话,讨论一个按钮(一般有两种状态)。我根据我认为 Eduardo 提出的问题回答了这个问题。如果他不喜欢我提供的答案,他就不会接受我的答案。 (3认同)

sha*_*bus 1

考虑这个例子: https: //jsfiddle.net/shanabus/mkv8heu6/6/

class App extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
    	buttonState: true
    }
    this.toggleState = this.toggleState.bind(this)
  }
  
  render() {
    return (
      <div>
      <h2>Button Toggle: {this.state.buttonState.toString()}</h2>                
        <button onClick={this.toggleState}>Toggle State</button>
      </div>
    )
  }
  
  toggleState() {
  	this.setState({ buttonState: !this.state.buttonState })
  }
}

ReactDOM.render(<App />, document.querySelector("#app"))
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.0.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.0.0/umd/react-dom.production.min.js"></script>
<div id="app"></div>
Run Code Online (Sandbox Code Playgroud)

这里我们使用布尔值 true/false 并在两种状态之间翻转。如果您希望使用其他一些自定义数据作为之前的状态,只需为此创建一个不同的变量即可。

例如:

this.state = { previousValue: "test", currentValue: "new thing" }
Run Code Online (Sandbox Code Playgroud)