【发布时间】:2020-06-21 15:19:20
【问题描述】:
这是一个 React 项目,它使用 API 创建一张卡片,展示 Github 用户信息。目前我正在每张卡上实现一个删除按钮,该按钮将删除该特定卡。您可以通过clicking here. 在代码沙箱上试用该应用程序。使用说明:输入任意“Github”用户名,点击添加卡片。
点击添加卡片后,用户信息将被提取到卡片中,然后存储在卡片列表中。这有一个可识别的密钥。但是当点击删除时,当前所有的卡片都被删除,而不是删除相应的卡片到按下删除按钮的位置。 (我已经排除了表单组件以使其更易于阅读)。
不确定我是否错误地使用了拼接或没有正确声明卡片密钥?
function App() {
const [cards, setCards] = useState([]);
const addNewCard = cardInfo => {
setCards(cards.concat(cardInfo));
};
const removeCard = key => {
setCards(cards.splice(key, 0))
}
return (
<div>
<Form onSubmit={addNewCard} />
<CardList
cards={cards}
handleClick={removeCard}
/>
</div>
);
}
const CardList = props => (
<div>
{props.cards.map((card, index) => (
<Card {...card} key={index} handleClick={props.handleClick} />
))}
</div>
);
const Card = props => {
return (
<div style={{ margin: "1em" }}>
<img alt="avatar" style={{ width: "70px" }} src={props.avatar_url} />
<div>
<div style={{ fontWeight: "bold" }}>{props.name}</div>
<div>{props.blog}</div>
<a href={props.html_url}>{props.html_url}</a>
<button onClick={props.handleClick}>Delete</button>
</div>
</div>
);
};
【问题讨论】:
-
只是快速查看您的代码,密钥似乎未定义或至少不是您想要的,因为密钥是卡的道具,并且您没有使用卡中的 id 填充密钥,并且您的删除点击在整个列表中.. 所以.. 它需要一些工作
-
我认为你是对的,但不确定如何解决这个问题......任何提示或相关示例都会很棒。
标签: javascript reactjs react-hooks react-component