【发布时间】:2021-08-30 09:02:33
【问题描述】:
我在 React 项目中有一个列表项,它由映射函数呈现到 UI
下面是代码
父组件
export default function PackageDetails({ newArray, packages }) {
const [show, setShow] = useState(false)
const setOpenFunction = () => {
setShow(!show)
}
return (
<Row>
<NonRecommendedPackage
setOpen={setOpenFunction}
show={show}
packages={packages}
/>
</Row>
)
}
子组件
export default function RecommendedPackage({ setOpen, show ,packages}) {
return (
packages.map((item, index) => {
return (
<React.Fragment key={index}>
<div className="not-recommended-packages" id={index}>
<div className="main-results-row">
<div className="package-item package-price">{item.price} € /ano</div>
<button className="plus-icon-button">
<span className="plus-text">+</span>
</button>
</div>
{show && <div className="main-info">THIS DIV GETS DISPLAYED WHEN USER CLICKS ON ANY LIST ITEM</div>}
</div>
</React.Fragment>
)
})
)
}
所以就像我的列表有 10 个项目,如果我选择位置 2 的项目,我只希望该 div 展开并显示我的“main-info” div,它由上述代码中的条件呈现
{show && <div className="main-info">THIS DIV GETS DISPLAYED WHEN USER CLICKS ON ANY LIST ITEM</div>}
【问题讨论】:
-
也许您的每个列表项都可以有自己的展开/折叠状态,然后您可以使用 click 事件处理程序进行切换。
标签: javascript reactjs