【发布时间】:2021-09-08 07:30:56
【问题描述】:
我的 APP 组件中有一个名为 setScore( ) 的函数,它作为道具传递给我的 Popup 组件。我想根据弹出组件中的条件调用UpdateScore( ) 函数。但是,我也想根据条件调用 setScore( ) 方法,但它给了我上面列出的错误。
const Popup = ({user,correctLetters,wrongLetters,setPlayable,selectedWord, playAgain, currentQuestion, words, score, setScore, quitGame}) => {
function UpdateScore() {
if(!check){
check = true;
setScore(score => (score + 1));
}
};
if ((checkWin(correctLetters,wrongLetters,selectedWord) === 'win') && (currentQuestion < words.length -1)){
UpdateScore();
}
else if((checkWin(correctLetters,wrongLetters,selectedWord) === 'win') && (currentQuestion === words.length -1 )){
UpdateScore();
}
这不是完整的代码,但主要问题在于setState( ) 调用。我查看了其他帖子,他们通过将 setState 方法包装在 useEffect 中解决了这个问题,但随后它又给了我另一个错误:
无法有条件地渲染 useEffects。
知道如何解决这个问题吗?
【问题讨论】:
-
您在
Popup渲染中调用setScore。你不能那样做。如果您需要在变量更改时更新您的状态,请使用useEffecthook
标签: javascript reactjs react-redux react-hooks