2 回答
TA贡献1816条经验 获得超4个赞
这是因为你需要sortClicked被 React 跟踪。
当let sortClicked = false在MyMilestones组件内部声明时,它在第一次组件挂载时声明一次,并且不会在组件重新渲染时更新。
所以你可以sortClicked使用React.useState保存状态并更新它onClick。 useState是一种一次性存储this.state类组件值的方式,但只存储一种状态。(我不会太深入,因为 React 文档对Introducing Hooks 进行了全面的介绍)
const MyMilestones = props => {
// let sortClicked = false;
// Initialize it to "false" by default.
let [sortClicked, setSortClicked] = React.useState(false)
let milestoneCards = ...;
const sortedMilestoneCards = ...;
return (
<div className="MilestoneCards">
{
<Card>
<CardBody>
<CardTitle>
<h4>My Milestones</h4>
</CardTitle>
<button
onClick={() => {
// Notify "React" to re-render.
setSortClicked(true)
// No need to return a new reference here.
}}
>
Sort
</button>
{/* 👇 Note that {} is wrapped around the whole block. */}
{sortClicked ? sortedMilestoneCards : milestoneCards}
</CardBody>
</Card>
}
</div>
);
};
添加回答
举报