javascript - 像按钮一样 react 切换

标签 javascript reactjs frontend

我有一个组件,其状态为:{likes: 123} 我在“喜欢”按钮旁边显示喜欢的数量。 如何实现此按钮的功能,因此当我单击它一次时,它会添加喜欢(因此 state.likes = 124),然后如果我想第二次单击它,它会返回到之前的状态(state.likes = 123)。当然,它始终显示正确的点赞数。这是我到目前为止所得到的:

class ProfileInfo extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      likes: this.props.likes,
    };
  }
  handleLike = () => {
    this.setState(prevState => ({
      likes: prevState.likes + 1,
    }));
  }
  render() {
    return (
      <div>
        <button className="like-button" onClick={this.handleLike}>
          Like
        </button>
      </div>
    );
  }
}

export default ProfileInfo;

它只是不断地增加点赞。

最佳答案

您可以执行以下操作。

Here is a codesandbox具有更完整版本的代码。

import React from 'react';

class Likes extends React.Component {

  constructor(props){

    super(props);
    this.state = {
      likes: 124,
      updated: false
    };

  }

  updateLikes = () => {

    if(!this.state.updated) {
      this.setState((prevState, props) => {
        return {
          likes: prevState.likes + 1,
          updated: true
        };
      });

    } else {

      this.setState((prevState, props) => {
        return {
          likes: prevState.likes - 1,
          updated: false
        };
      });

    }
  }

  render(){

    return(
      <div>
        <p onClick={this.updateLikes}>Like</p>
        <p>{this.state.likes}</p>
      </div>
    );
  }
}

export default Likes;

关于javascript - 像按钮一样 react 切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46044369/

相关文章:

javascript - 如何改进元音计数器功能以提高效率?

javascript - react colspan 不工作

javascript - React 组件循环更新 (GraphQL)

reactjs - 从 npm packages.json 中删除所有未使用的依赖项

javascript - 空注入(inject)器错误 : StaticInjectorError(DynamicTestModule) When Testing in Angular 2

twig - 如何在 Shopware 6 中创建自定义字段并在前端显示?

javascript - 自动播放音频播放列表 SoundManager2 bar-ui

javascript - 我可以从 Mocha 单元测试中删除文件吗?

javascript - 如果用户在 Android 2.3.7 上的文件输入中选择了文件,如何在 JS 中检查

html - 改变当前使用无序列表和绝对定位的 3 列布局