首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React - the“render more hooks the previous render”错误

React - the“render more hooks the previous render”错误
EN

Stack Overflow用户
提问于 2020-03-30 01:53:49
回答 2查看 5.8K关注 0票数 1

我有以下组件:

代码语言:javascript
复制
const [eventCounter, setEventCounter] = useState(0)

let subsectionRefs = data ? Object.values(data).reduce((acc, event) => {
    acc[event.id] = useRef();
    return acc;
}, {}) : {};

    const setRankChangeFocus = eventID => {
    setEventCounter(eventCounter + 1);
    window.scrollTo(0, subsectionRefs[eventID].current.offsetTop);
};

return (
                    <Comp
                        key={event.id}
                        onRankChange={(value) => {
                            setRankChangeFocus(value);
                        }}
                    />

)

本质上,我希望subsectionRefs在每次从子组件Comp调用setRankChangeFocus(value)时重新初始化自身。

然而,当我加载页面时,我得到了“render more hooks the the previous render”错误-为什么?我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2021-07-24 02:33:09

您正在从setRankChangeFocus中调用setEventCounter函数,它既不是一个自定义钩子,也不是一个正确的React函数组件。请参阅Rules of Hooks

票数 1
EN

Stack Overflow用户

发布于 2020-03-30 01:55:56

你不能像对useRef做的那样使用use hooks in conditions

只在顶层调用钩子。不要在循环、条件或嵌套函数中调用钩子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60918468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档