javascript - 渲染不同的组件时无法更新组件(useState)
问题描述
我正在尝试useState
从子组件执行 a,但会触发警告,因此我的状态未更新。
错误 :
Cannot update a component (`GetProduct`) while rendering a different component (`PageMenu`). To locate the bad setState() call inside `PageMenu`
我的组件中只有一个钩子setState
触发器。useState
GetProduct
GetProduct
零件:
export const GetProduct: React.FC<Props> = () => {
let data = RecovData()
console.log(data.formationData)
const groupedByCategories = lodash.groupBy(data.formationData,
function (form) {
return form.categorie;
})
const categories = Object.keys(groupedByCategories);
console.log('0', categories.length)
const [currentCategory, setCurrentCategory]: [null | string, Function] = useState(null)
useEffect(() => {
if (categories.length > 0) {
setCurrentCategory(categories[0])
}
}, [categories])
console.log('current', currentCategory)
if (currentCategory != null) {
return (
<div>
<PageMenu
categories={categories}
setCurrentCategory={setCurrentCategory}
/>
<MainCard
currentCategory={currentCategory}
formationData={data.formationData}
catalog={data.catalog}
shopId={data.shopId}
viewer={data.viewer}
/>
</div>
);
}
return null
};
PageMenu
在哪里使用useState
:
interface Props {
categories?: string[],
setCurrentCategory?: Function,
}
export const PageMenu: React.FC<Props> = (props) => {
const categories = props.categories;
const setCategory = props.setCurrentCategory;
return (
<PageHeader
className="product-page-header"
title="Découvrir toutes nos formations"
>
<Menu className="page-menu_wrapper" mode="horizontal" defaultSelectedKeys={['0']}>
{categories.map((categorie, index) => {
console.log('ici', categorie)
return (
<Menu.Item
key={`${index}`}
className={"left-menu_item"}
onClick={setCategory(categorie)}
>
<Link to={`/`}>{categorie}</Link>
</Menu.Item>
)
})}
</Menu>
</PageHeader>
)
}
希望你能帮助我,谢谢
解决方案
推荐阅读
- python - For 循环 if 语句在第一行返回不想要的结果
- javascript - @Input 和 @Output 在 Angular 5 中始终未定义
- .htaccess - 仅当存在查询字符串时,htaccess 才会重定向到新域
- sql - 如何根据另一个表列的条件自动更新列的值?
- mysql - 如何减少显示输出所需的加载时间?
- java - “现在更新”,Oracle,springframework,QuerySyntaxException
- r - r 带有 for 循环的闪亮反应数据
- symfony - 我无法显示我的 pagelist.html.twig(您可以忽略法语单词)
- mongodb - Mongo 查找查询不适用于某些值。
- java - BufferReader 卡在 readline()