javascript - React Hook "React.useEffect" 在函数 "selectmenu" 中调用,它既不是 React 函数组件也不是自定义 React Hook 函数
问题描述
问题:React Hook "React.useEffect" 在函数 "selectmenu" 中被调用,该函数既不是 React 函数组件也不是自定义 React Hook 函数。
目标:我只想在单击按钮时挂载 Component('component DidMount/WillUnmount) (使用 useEffect()),而不是在加载文件(或整个组件)时挂载。
实际目标:我想在点击时选择(或突出显示)一个文件(自定义)。但是,当用户在文件 () 的尺寸之外单击时,应取消选择所选文件(删除突出显示)。
export default function Academics() {
let [ ismenuselected, setmenuselection] = useState(0)
const selectmenu = () => {
console.log("Menu to Select")
React.useEffect(() => {
console.log('Component DidMount/WillUnmount')
return () => {
console.log('Component Unmounted')
}
}, [isfolderselected]);
}
return (
<div onClick={selectmenu}></div>
)
}
笔记:
解决方案
我想我得到了你想要完成的事情。首先,您不能在函数内定义挂钩。您可以做的是在至少其中一个依赖项发生更改后触发效果回调。
useEffect(() => {
// run code whenever deps change
}, [deps])
虽然对于这个特殊问题(根据我从您的描述中了解到的),我会这样做:
export default function Academics() {
let [currentOption, setCurrentOption] = useState()
function handleSelectOption(i) {
return () => setCurrentOption(i)
}
function clearSelectedOption() {
return setCurrentOption()
}
return (options.map((option, i) =>
<button
onClick={handleSelectOption(i)}
className={i === currentOption ? 'option option--highlight' : 'option'}
onBlur={clearSelectedOption}
></button>
))
}
推荐阅读
- mysql - 插入后显示事件在mysql中不起作用,或者没有数据保存在那里
- android - 获取android内部存储中的所有文件
- python - Jenkins API 500 与 python
- r - PARTY包安装失败和错误信息
- user-interface - Unity,两个玩家在同一台PC上的角色选择屏幕
- php - 如何在表格末尾添加一个额外的单元格?
- php - PHP Google Drive API - 将文件上传到我自己的个人驱动器帐户
- android - 在 Mac 上为 android 编译 ffmpeg
- android - Android 设备无法扫描信标
- c# - 通过结构将位图从 C# 传递到 C++