javascript - 单击组件时onClick未触发
问题描述
一个很好的话题,但是当点击组件时我的事件句柄没有被触发并且看不到出了什么问题。有任何想法吗?它与通过数组元素的映射有关吗?
function App() {
const [fileTree, setFileTree] = useState(null);
useEffect(() => {
const data = getFileTree();
setFileTree(data)
}, []);
const handleClick = () => {
console.log('clicked')
}
const mapThroughTreeItem = () => {
return fileTree.root.map((el, i) => <FileTreeItem
item={el}
key={i}
onClick={handleClick}
/>)
}
if (fileTree) {
return (
<>
{mapThroughTreeItem()}
</>
);
} else {
return (
<>
Loading..
</>
);
}
}
export default App;
解决方案
FileTreeItem 似乎是一个自定义元素,您如何处理该组件内的点击事件?
你可能应该有类似的东西
function FileTreeItem({onClick}) {
return (
<div onClick={onClick}></div>
)
}
您不能直接在自定义元素上注册事件,因为它们将在 DOM 中被它们的渲染实现完全替换。
推荐阅读
- android - 错误:Android Studio .apk 构建期间的“Dex 文件具有无效的标头”
- java - 如何检查 ArrayList 是否包含特定元素的特定数量的实例?
- apache - httpd conf 不允许 apache 重启
- r - 如何使用 paste 和 as.formula 生成复杂的公式?
- python - OpenCV:如何从背景中删除文本
- c++ - 将旧 cstring 的标记连接到新 c-string
- python - 如何从大文件夹中读取图片并将其拆分为训练集、验证集和测试集?
- javascript - 为什么 navigator.storage 在最新的 Chrome 中未定义?
- java - 是否可以将值从适配器传递给活动?
- python - Python3.x,Matplotlib:在 for 循环中绘制子图