У меня проблемы с приложением для ответов на вопросы. Далее следует описание: Это из приложения. js файл:
...
const [createQuiz, setCreateQuiz] = useState(false);
...
useEffect(()=> {
const reRender = () => {
setCreateQuiz(true)
}
window.onload=function(){
document.getElementById("myBtn").addEventListener("click", reRender);
}
// return document.getElementById("myBtn").removeEventListener("click", reRender);
}, [createQuiz])
return (
<QuizContextProvider>
{
(createQuiz) ? (
<div>Form</div>
) : (
<div>
<Modal/>
<Question question={questions[questionNumber]} next={goToTheNext} />
</div>
)
}
{console.log(createQuiz)}
</QuizContextProvider>
);
}
Как видно, это условный рендеринг: модальное окно спрашивает пользователя, хотят ли они пройти существующий тест или создать их собственные, и когда пользователь нажимает кнопку «Создать свой», приложение должно повторно выполнить рендеринг снова, на этот раз useEffect () (в App. js) устанавливает значение createQuiz равным true. фрагмент кода, приведенный ниже, взят из компонента <Modal />
:
return (
<div className='benclosing' style={{display:displayValue}}>
<div className='modal'>
<h1>Welcome!</h1>
<p>Do you want to take an existing quiz or create your own?</p>
<button onClick={hideWindow} >Existing quiz</button>
<button id='myBtn'>Create your own</button>
</div>
</div>
)
}
Все работает нормально, как ожидалось, за исключением 1: всякий раз, когда щелкают значок перезагрузки, моя страница повторно отображается снова, и пользователя снова спрашивают если они хотят пройти существующую викторину. Я хочу, чтобы это освежение ни на что не влияло. Я застрял с этой проблемой. Как добиться желаемого результата?
Я тоже пробовал это:
const reRender = () => {
setCreateQuiz(true)
}
useEffect(()=> {
reRender()
//return setCreateQuiz(false)
}, [createQuiz])
Это не сработало, как ожидалось. Я описал, что это вызвало, во втором комментарии Red Baron, пожалуйста, посмотрите.