javascript - 像多个元素的计数器
问题描述
所以我为喜欢创建了一个计数器。我总共有 3 个元素,我希望当用户单击其中一个元素时,确切的元素是递增的,但到目前为止,如果单击一个元素,所有元素都会递增,请帮助我
class home extends Component {
constructor(props) {
super(props);
this.state = {
likeCounter: 0,
};
}
counter = () => {
this.setState((prevState) => ({
likeCounter: prevState.likeCounter + 1,
}));
};
render() {
return (
<>
<button className="click" onClick={this.counter}>
{this.state.likeCounter} likes
</button>
<button className="click" onClick={this.counter}>
{this.state.likeCounter} likes
</button>
<button className="click" onClick={this.counter}>
{this.state.likeCounter} likes
</button>
</>
);
}
}
解决方案
我会这样尝试:
import React, {Component} from "react";
class Home extends Component {
constructor(props) {
super(props);
this.state = {};
}
counter = (counter) => {
this.setState((prevState) => ({
[counter]: prevState[counter] ? prevState[counter] + 1 : 1,
}));
};
render() {
return (
<>
<button onClick={() => this.counter(1)}>
{this.state[1] ? this.state[1] : 0} likes
</button>
<button onClick={() => this.counter(2)}>
{this.state[2] ? this.state[2] : 0} likes
</button>
<button onClick={() => this.counter(3)}>
{this.state[3] ? this.state[3] : 0} likes
</button>
<button onClick={() => this.counter(4)}>
{this.state[4] ? this.state[4] : 0} likes
</button>
</>
);
}
}
export default Home;
在您将有关“如何使这三个按钮工作”的问题更改为“我有很多按钮,我将如何做到这一点”之后,我建议您创建一个可以执行此类操作的单个组件并多次包含它(写为一个功能组件):
import React, { useState } from "react";
function LikeBtn() {
const [likes, setLikes] = useState(0);
return <button onClick={() => setLikes(likes + 1)}>{likes} likes</button>;
}
export default LikeBtn;
然后像这样在您的应用程序中使用它:
import React from "react";
import LikeBtn from "./LikeBtn";
export default function App() {
return (
<div>
<LikeBtn />
<LikeBtn />
<LikeBtn />
<LikeBtn />
<LikeBtn />
</div>
);
}
推荐阅读
- google-sheets - 如何在不覆盖 Google 表格中的数据的情况下将数据行从 1 个选项卡复制到另一个选项卡
- python - 将嵌套列表转换为嵌套字典
- python - Python存储类列表并导出两者
- flutter - Flutter BottomNavigationBar 在 dispose 后更改页面索引或再次调用函数(带参数?)
- javascript - 获取从 ajax 调用动态添加的特定输入的值
- python - 如何从包含 CSV 数据的 ResultProxy 对象中检索 DataFrame?
- angular - 具有授权和角度的 CORS 配置
- python - 在带有 sklearn/Keras 的神经网络上使用 skopt 进行超参数优化
- linux - 用于测试文件是否存在于 bash 中的 shell 函数
- python - 从中提取一些东西