#reactjs #react-hooks
#reactjs #реагирующие хуки
Вопрос:
У меня возникают трудности со сложной формой. Имеется около 400 вопросов, большинство из которых являются радиовыборками. Я думаю, что это то, с чем нужно обращаться useMemo
, или createRef
, useRef
или что-то в этом роде, чтобы только этот первый пустой компонент получал true
результат для отображения стиля.
Пожалуйста, помогите мне.
Вот основное сходство с исходным кодом
const SeveralForms = () => {
return(
// hope pseudo code is ok
// like 10 of these
<Form>
)
}
const Form = () => {
return(
// about 30 of these
<RadioGroup>
)
}
const RadioGroup = () => {
const show = () => (pesky logic i cant pin down)
return(
<div style={{display: show() ? 'block' : 'none' }}>
<RadioButton />
<RadioButton />
<RadioButton />
</div>
)
}
Комментарии:
1. Итак, вы хотите отображать только вопросы, на которые нет ответов?
2. да, но только по одному за раз, на первый, на который нет ответа, спасибо
3. В классе radiogroup у вас другой набор вопросов, и если на первый из них нет ответа, вы хотите показать всю эту группу?
4. каждый
<RadioGroup>
— это только 1 вопрос, и любой выбранный вариант является ответом, затем я хочу, чтобы отображалась последующая группа, и только по одному за раз, спасибо 🙂
Ответ №1:
Почему бы просто не:
const RadioGroup = () => {
const [isAnswered, setIsAnswered] = useState(false);
const onClick = () => {
// check if either of your radio buttons are checked
// and set the state accordingly
setIsAnswered(true /*or false*/)
}
return(
<div style={{display: isAnswered ? 'none' : 'block' }} onClick={onClick}>
<RadioButton />
<RadioButton />
<RadioButton />
</div>
)
}
Комментарии:
1. Проблема в том, что я не знаю, как пометить вопросы, на которые нет ответов , чтобы отображался только первый из них. Возможно, мне придется установить счетчик на верхнем уровне. Тем не менее, спасибо. И вау, я почти никогда не получаю одобрения. Возможно, это псевдокод для быстрого чтения. 🙂