javascript - 带有 Reactjs 的计数器按钮
问题描述
我是学习 reactjs 的初学者,我正在制作一个小应用程序,它只是为了写帖子,我想为每个帖子制作一个点赞按钮和计数器,我尝试使用 state 但它使用相同的计数器这里的所有帖子都是 MyPosts.jsx 文件
import React from 'react'
export default (props) => {
let likes=0;
return <div className="Post">
<h4>{props.post} </h4>
<p>{props.like}</p>
<button onClick={() =>props.LikesCount(props.like)}>Like</button>
<button onClick={()=>props.deletePost(props.index)} >Delete</button>
</div>
}
export const Post = () => {
return <div>
post export
</div>
}
以及从 app.js 文件中计算喜欢和状态的功能
state = {
like:0,
posts: []
}
LikesCount = (like) => {
this.setState({ like: this.state.like + 1})
}
知道如何在不使用状态的情况下为每个帖子制作计数器吗?谢谢你。
解决方案
目前,您的代码的问题是您使用 1 个like
变量,而 posts 是一个数组。我假设这是从数组deletePost(some index)
中删除带有一些正索引的帖子。posts
解决方案 1
您可以将likes
状态转换为数组。所以,当你这样做props.LikesCount(props.index)
并在LikesCount
函数内部时,
LikesCount = (index) => {
this.state.likes[index] += 1;
}
现在当你删除一个帖子时,你还需要在likes
数组中拼接相同的索引。
解决方案 2
您可以创建posts
一个对象数组,其中每个对象代表这个:
{
likes: 0,
post: ''
}
推荐阅读
- php - 在 yii2 框架中回显 p 标签以及 isset 函数条件
- vba - VBA 在活动列中查找值
- javascript - 如何在不使用 XMLHttpRequest() 重新加载页面的情况下将 datepicker 值传递给 php;
- elasticsearch - Elasticsearch 聚合按 _key 排序
- javascript - 在 GatsbyJS 项目中加载资产非常缓慢(Netlify 托管)
- r - Draw geom_vline in discrete x axis
- javascript - 如何将 Angular 5 应用程序集成到 Javascript/JQuery 应用程序中?
- spring-boot - 如何在@SpringBootTest 期间跳过 JdbcAppender?
- powershell - 没有功能的 PowerShell 输出
- python-3.x - 如何通过寻路游戏避免即时“游戏结束”?