У меня есть useState, который в зависимости от булева значение отрендеривает компонент:
const [questionnaireSteps, setQuestionnaireSteps] = useState({
contactUs: true, // контактная информация - 1-я форма
phoneNumberVerification: false, // подтверждение номера телефона - код из смс
passportDetails: false, // паспортные данные - 2-я форма
employmentAndIncome: false, // занятость и доходы - 3-я форма
})
Вот сами компоненты:
{ questionnaireSteps.contactUs === true
? <StepOneForm
statusStepOneForm={(value) => {setQuestionnaireSteps({...questionnaireSteps, contactUs: value}); console.log(value)}}
statusSmsPhone={(value) => setQuestionnaireSteps({...questionnaireSteps, phoneNumberVerification: value})}
phoneNumber={setPhoneNumber}
/> : undefined }
{ questionnaireSteps.phoneNumberVerification === true
? <ModalDialog
phoneNumber={phoneNumber}
statusSmsPhone={(value) => setQuestionnaireSteps({...questionnaireSteps, phoneNumberVerification: value})}
statusStepOneForm={(value) => setQuestionnaireSteps({...questionnaireSteps, contactUs: value})}
setStatusStepTwoForm = { (value) => setQuestionnaireSteps({...questionnaireSteps, passportDetails: value}) }
/> : undefined }
{ questionnaireSteps.passportDetails === true
? <StepTwoForm
statusSmsPhone={(value) => setQuestionnaireSteps({...questionnaireSteps, phoneNumberVerification: value})}
statusStepTwoForm={(value) => setQuestionnaireSteps({...questionnaireSteps, passportDetails: value})}
statusStepThreeForm={(value) => setQuestionnaireSteps({...questionnaireSteps, employmentAndIncome: value})}
/> : undefined }
{ questionnaireSteps.employmentAndIncome === true
? <StepThreeForm
statusStepTwoForm={(value) => setQuestionnaireSteps({...questionnaireSteps, passportDetails: value})}
statusStepThreeForm={(value) => setQuestionnaireSteps({...questionnaireSteps, employmentAndIncome: value})}
/> : undefined }
Проблема заключена здесь:
statusStepOneForm={(value) => {setQuestionnaireSteps({...questionnaireSteps, contactUs: value}); console.log(value)}}
В консоль выводит значение
false
, соответственно в стейте
contactUs
должен был стать false и скрыться, но если вызывать useEffect, то выводя список объектов можно увидеть что
contactUs
все равно остается true:
contactUs: true
employmentAndIncome: false
passportDetails: false
phoneNumberVerification: true
Я знаю что такая ошибка связана с перередером компонентов и не знаю как её решить. Заранее спасибо.