如何在React中定位DOM元素列表

3

我目前正在完成 Brad Traversy 的50个项目,但我想使用 Next.js 和 React 来实践构建,因为这是我在工作中使用的。

正如你从我在这里发布的内容中看到的,情况并不顺利!我已经遇到了一些障碍。

我试图创建一组卡片,当其中一个被点击时,它会展开。此外,如果已经有一个卡片展开,而另一个卡片被点击,则需要将先前展开的卡片折叠起来,同时展开当前点击的卡片。

我目前正在尝试通过激活状态,并将其传递给面板道具(props)来解决这个问题,但显然这只会使所有 flex 都设置为相同的,什么也不会发生。但是,当我尝试在 Panel 组件内定义 active useState 时,它可以工作,但我无法针对其他面板中的其他 active 状态将它们设置为 false。

你可以在 CodeSandbox 上查看我的代码 https://codesandbox.io/s/nifty-goldberg-5noi4?file=/pages/expanding-cards.jsx

你可以在这里查看正确的功能 https://50projects50days.com/projects/expanding-cards/

如何解决这个问题?


每个面板都需要一个唯一的名称,当单击时将其传递回父组件,并且打开/关闭应基于该名称。您将拥有一个字符串而不是一个布尔值。与名称匹配的任何面板都将处于打开状态,其他面板将关闭。 - Sanish Joseph
1个回答

1

再次感谢西班牙的Joseph,我将active定义为active==="1(或2、3等)",并在onClick中设置setActive(1(或2、3等)),这样就可以呈现不同的styled-components。非常感谢! - I_Too_Code

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接