【发布时间】:2021-03-05 16:14:15
【问题描述】:
我有一个组件,它有几张卡片,每张卡片都有一个按钮。这是组件:
import React, { useState, useEffect } from "react";
import "./App.css";
import { Card, Container, Row, Col, Button } from "react-bootstrap";
function ListItemComponent() {
let [responseData, setResponseData] = useState([]);
const [isFavorite, setIsFavorite] = useState(false);
useEffect(() => {
fetch("https://api.quotable.io/authors?limit=10&skip=20")
.then((res) => res.json())
.then((data) => {
console.log(data.results);
setResponseData(data.results);
});
}, []);
console.log({ responseData });
var testObject = { one: 1, two: 2, three: 3 };
// Put the object into storage
localStorage.setItem("testObject", JSON.stringify(testObject));
// Retrieve the object from storage
var retrievedObject = localStorage.getItem("testObject");
console.log("retrievedObject: ", JSON.parse(retrievedObject));
const handleClick = () => {
setIsFavorite((s) => !s);
};
return (
<div>
<Container>
<Row>
{responseData && responseData.length > 0 ? (
responseData.map((author) => {
return (
<Col xl={6} lg={6} md={12} sm={12} xs={12} key={author.link}>
<Card>
<Card.Body>
<p>
<b>Name:</b> {author.name}
</p>
<p>
<b>Bio:</b> {author.bio}
</p>
<a href={author.link}>Link</a>
{isFavorite ? (
<Button variant="danger" onClick={handleClick}>
Remove Favorite
</Button>
) : (
<Button variant="success" onClick={handleClick}>
Add Favorite
</Button>
)}
</Card.Body>
</Card>
</Col>
);
})
) : (
<p>No Data Found</p>
)}
</Row>
</Container>
</div>
);
}
export default ListItemComponent;
这是现在正在发生的事情的 GIF:https://recordit.co/C8gUJ0ByRY。所以现在如果我只点击一个按钮,所有卡片中的所有按钮都会被选中并从Add Favorite更改为Remove Favorite,但我想更改唯一被点击的按钮的文本,而不是全部。
【问题讨论】:
标签: javascript reactjs button