reactjs - React onClick 不适用于列表项
问题描述
我有一个带有列表项的下拉菜单,我正在使用包“react-onclickoutside”来检测组件外部的点击,即当有人点击组件外部时下拉关闭它,我面临的问题是我的“onClick”是当我点击它们时不处理 li 标签。
这是下面的代码供审查。
import React from "react";
import { useState, useEffect } from "react";
import onClickOutside from "react-onclickoutside";
const TripTypeDropdown = (props) => {
const [values, setValues] = useState([
{ tripType: "One Way", value: 1 },
{ tripType: "Return", value: 2 },
{ tripType: "Multi- City", value: 3 },
]);
const [selectedItem, setSelectedItem] = useState({
tripType: "One Way",
value: 1,
});
const [isOpen, setIsOpen] = useState(false);
const toggle = () => {
console.log("toggle");
setIsOpen(!isOpen);
};
TripTypeDropdown.handleClickOutside = () => setIsOpen(false);
const selectItemFromList = (index) => {
console.log("select kiya");
const itemSelected = values[index];
console.log(itemSelected);
setSelectedItem(itemSelected);
};
const getActiveClassName = (item) => {
if (selectedItem) {
if (item.tripType == selectedItem.tripType) return "active";
else return "";
}
};
return (
<React.Fragment>
{console.log(selectedItem)}
<div className="custm-dropdown" onClick={toggle}>
{selectedItem.tripType}
<span className="dropdown-icon">
<img
src={require("../../../style/images/flight/grey-light-dropdowns.svg")}
alt="Aertrip"
/>
</span>
</div>
{isOpen ? (
<div className={`dropdown-modal sm-modal ripple`}>
<ul>
{values.map((item, index) => (
<li
className={getActiveClassName(item)}
onClick={() => console.log("clicked")} ///this doesnt gets consoled in my browser , nor does any function runs
key={index}
>
{item.tripType}
</li>
))}
</ul>
</div>
) : null}
</React.Fragment>
);
};
const clickOutsideConfig = {
handleClickOutside: () => TripTypeDropdown.handleClickOutside,
};
export default onClickOutside(TripTypeDropdown, clickOutsideConfig);
解决方案
推荐阅读
- web-services - 为什么性能测试时“孵化率”很重要?
- c - 将文件中的每一行设置为 char*
- ios - 颤振)iOS 模拟器部署目标“IPHONEOS_DEPLOYMENT_TARGET”设置为 8.0
- html - 开始日期和结束日期对齐
- javascript - 使用 localCompare 排序时,对象数组的 TypeScript 设置类型会导致问题
- laravel - 使用中间件 Laravel 8 调用未定义的方法 App\Models\User::hasRole()
- postman - Fedex 地址验证身份验证失败
- python - 在预训练嵌入的基础上构建用于二进制分类的神经网络不起作用?
- elasticsearch - 为文档中的所有字段添加顶级键
- android - 使用自定义相机捕捉帧