Я получаю сообщение об ошибке: обработано больше хуков, чем во время предыдущего рендеринга. Я проверил другие посты, в которых рассматриваются условные выражения с перехватчиками реакции, но я не могу диагностировать аналогичную проблему в своем коде. Если я закомментирую часть кода Object.keys в задачах. js, ошибка не отобразится, но если я оставлю ее, я получу ошибку. Я полагаю, что это вызвано ошибкой в файле keepsessionutils. js. Пожалуйста, помогите.
испытания. js
return (
<div className="about">
<div className="about-header">
<div className="about-headerText">
<h2> Dummy Challenge </h2>
<h2> Dummy Challenge </h2>
<h2> Dummy Challenge </h2>
<h2> Dummy Challenge </h2>
<h2> Dummy Challenge </h2>
<hr />
{Object.keys(valid_playlists).map(key => (
<button type="button" onClick={createChallengeUtil(key)}>
{valid_playlists[key]}
</button>
))}
</div>
</div>
</div>
);
}
createChallengeUtil. js
export default function createChallengeUtil(playlist_id) {
// Check if there are at least 20 songs
var token = KeepSession();
// Populate Firebase with challenge data
}
keepsession. js
export default function KeepSession() {
const [value, setValue] = React.useState(
localStorage.getItem('myValueInLocalStorage') || ''
);
// Here I am just checking to see if we need to retrieve a new token or not.
if (value === "undefined"){
var token = getLocalToken();
}
else{
var token = value;
}
// This block detects if the user refreshes the page and stores the current token if so.
window.onbeforeunload = (e) => {
// I'm about to refresh! do something...
localStorage.setItem('myValueInLocalStorage', token)
setValue(token);
};
return token
}