【发布时间】:2021-04-16 15:05:52
【问题描述】:
我正在使用React 和Redux 为下拉菜单构建一个动态子菜单。计划是当用户单击下拉菜单时,将进行 API 调用,并根据 API 的响应创建一个子菜单。这是我的下拉菜单文件
MainMenu.js
import React, {useEffect} from 'react'
import CreateSubMenu from './utils/CreateSubMenu.js'
import fetchSubMenuData from './actions/submenuAction.js'
function getSubMenu(menu, level){
if(level == "level1") {
const updatedMenu = CreateSubMenu(menu)
return updatedMenu
}
// entry level function
const DropdownMenu = () => {
useEffect(() => {
fetchSubMenuData();
}, [])
let menu = {"menu": "Locations", "submenu": []}
const updatedNavigation = getSubMenu(menu, "level1")
}
以下是包含查找 API 响应并将子菜单添加到菜单的函数的文件。点击下拉菜单时调用 API
CreateSubMenu.js
import { useSelector, useDispatch } from 'react-redux'
const CreateSubMenu = (menu) => {
const subMenuData = useSelector(state=> state.addMenu)
}
但在 CreateSubMenu.js 中,我收到此错误Error: Invalid hook call. Hooks can only be called inside of the body of a function component. 当我在函数内部使用useSelector 时会出现此错误。
我做错了什么?
【问题讨论】:
-
你能分享你的组件的完整代码吗?
-
你做了
const updatedMenu = CreateSubMenu(menu)但CreateSubMenu没有返回任何东西。如果它重新运行 jsx,您可以执行以下操作:const updatedMenu = <CreateSubMenu {...menu} />
标签: reactjs redux react-hooks