【发布时间】:2020-09-21 15:14:44
【问题描述】:
我有一个菜单选项列表,我需要跟踪单击了哪个选项。我还需要对单击的选项应用不同的样式。以下是相关代码:
export default function account() {
let [currentTab, setCurrentTab] = useState("username")
const handleListItemClick = (e) => {
let targetId = e.target.id || e.target.parentNode.id
if (currentTab !== targetId) setCurrentTab(targetId)
}
return (
<>
<Layout>
<div className={styles.contentWrapper}>
<div className={styles.leftBar}>
<ul className={styles.listContainer}>
<li className={`${styles.listItem} ${currentTab === "username" && styles.listItemActive} `}
id="username"
onClick={handleListItemClick}>
<FiUser color="#5650bf" size="18px" />
<span>Update username</span>
</li>
<li className={`${styles.listItem} ${currentTab === "topics" && styles.listItemActive} `}
id="topics"
onClick={handleListItemClick}>
<FiBookmark color="#5650bf" size="18px" />
<span>My topics</span>
</li>
<li className={`${styles.listItem} ${currentTab === "about" && styles.listItemActive} `}
id="about"
onClick={handleListItemClick}>
<FiInfo color="#5650bf" size="18px" />
<span>Update About page</span>
</li>
</ul>
</div>
</div>
</Layout>
</>
)
}
代码有效,但是,我不确定它是否是使用 React 的正确方法,以及是否有更好的解决方法。谢谢。
【问题讨论】:
-
您做得完全正确...我不确定您是否需要问这个问题...?
-
一个小整理,你需要包裹整个return语句的片段吗?它只包装了一个 JSX 元素,因此您可以删除它。
-
@DBS 这不是所有的代码,只是一个相关的部分。不过谢谢!
标签: javascript reactjs