首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅切换一个Reactstrap折叠?

如何仅切换一个Reactstrap折叠?
EN

Stack Overflow用户
提问于 2020-09-29 03:07:25
回答 1查看 88关注 0票数 0

我正在开发一个Next.JS应用程序,它列出了一些Github用户,当我点击一个特定的用户框时,他们的框应该会使用Reactstrap的折叠进行切换。但是所有的框一次切换,独立于被点击的用户。我试图分离他们的onClick事件,但没有成功。

下面是我的前端代码:

代码语言:javascript
复制
import React, { useEffect, useState } from "react"
import { Collapse, CardBody, Card } from 'reactstrap'

export default function Users() {

  const [isOpen, setIsOpen] = useState(false);
      const toggle = (e) => {
          setIsOpen(!isOpen)
      }
 return (
        <ul>
            {users.map(user => (
                <li>
                    <div className="user-space">
                        <div className="closed-user">
                            <img onClick={toggle} src={user.avatar_url} alt={user.login} id={user.login} />
                            <h3 onClick={toggle} className="nickName" id={user.login}>{user.login}</h3>
                        </div>
                        <Collapse isOpen={isOpen}>
                            <Card className="accordion">
                                <CardBody className="accordion-text">
                                    <label>User Name: {user.name}</label>
                                    <label>User Bio: {user.bio}</label>
                                    <label>User Location: {user.location}</label>
                                    <label>User Blog: {user.blog} </label>
                                    <label>Number of followers: {user.followers}</label>
                                    <label>Number of public repositories: {user.public_repos}</label>
                                </CardBody>
                            </Card>
                        </Collapse>
                    </div>
                </li>
            ))}
        </ul>
    )
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-29 04:08:34

如果您扩展所有用户卡,则可以应用您的isOpen。如果您想要扩展指定的用户卡。您应该具有正在展开的用户的状态:

这里只是我的例子。您可以使用use.id代替状态index

代码语言:javascript
复制
function Users() {
    const [index, setIndex] = useState(false);
    const toggle = (idx) => {
        setIndex(index === idx ? null : idx);
    }
    return (
        <ul>
            {users.map((user, idx) => (
                <li id={idx}>
                    <div className="user-space">
                        <div className="closed-user">
                            <img onClick={() => toggle(idx)} src={user.avatar_url} alt={user.login} id={user.login} />
                            <h3 onClick={() => toggle(idx)} className="nickName" id={user.login}>{user.login}</h3>
                        </div>
                        <Collapse isOpen={idx === index}>
                            <Card className="accordion">
                                <CardBody className="accordion-text">
                                    <label>User Name: {user.name}</label>
                                    <label>User Bio: {user.bio}</label>
                                    <label>User Location: {user.location}</label>
                                    <label>User Blog: {user.blog} </label>
                                    <label>Number of followers: {user.followers}</label>
                                    <label>Number of public repositories: {user.public_repos}</label>
                                </CardBody>
                            </Card>
                        </Collapse>
                    </div>
                </li>
            ))}
        </ul>
    )
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64108183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档