Multi step form or conditional rendering with DevTool console get an error Cannot update a component (`FormItemTest`) while rendering a different component (`FormItemTest`). To locate the bad setState() call inside `FormItemTest`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- react, typescript
- Área
- devtools
Línea de trabajo
Start with the provided Demo reproduction using FormProvider, conditional Step2 rendering, getStep(step), and . Reproduce the warning with DevTool enabled, then inspect the DevTool component and its control subscription or rendering path. Done means the multi-step example no longer reports the setState-during-render warning while DevTool remains enabled.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The collection of fields in react hook form meets expectations. Confirmed to be a bug in DevTool. when I annotate DevTool,no more errors reported.
this is example code
import {
useForm,
FormProvider
} from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { DevTool } from '@hookform/devtools';
import FormItemTest from '~/components/form/FormItemTest';
import {
useState
} from 'react';
import * as z from 'zod';
const schema = z.object({
step1: z.string(),
step2: z.string()
});
function Step1() {
return (
<FormItemTest name='step1' />
)
}
function Step2() {
return (
<FormItemTest name='step2' />
)
}
function getStep(step: number) {
switch (step) {
case 0:
return <Step1 />;
case 1:
return <Step2 />;
default:
return null;
}
}
export default function Demo() {
const [show, setShow] = useState(false);
const [step, setStep] = useState(0);
const methods = useForm({
resolver: zodResolver(schema),
mode: 'onChange'
});
const onSubmit = methods.handleSubmit(values => {
console.log(values);
});
return (
<div>
<FormProvider {...methods}>
<form>
<Step1 />
{show && <Step2 />}
{getStep(step)}
</form>
</FormProvider>
<DevTool control={methods.control} />
<button onClick={() => setShow(s => !s)}>Toggle Step2</button>
<button onClick={onSubmit}>Submit</button>
<button onClick={() => setStep(s => s + 1)}>Next Step</button>
</div>
)
}
- Lenguaje dominante
- TypeScript
- Estrellas
- 670
- Forks
- 55
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de react-hook-form/devtools
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
react-hook-form/devtools#234 · 1 comentario · 5 reacciones ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
react-hook-form/devtools#223 · 2 reacciones ·
-
DevTools in production Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
react-hook-form/devtools#212 · 5 comentarios · 8 reacciones ·
-
issue: Warning: Cannot update a component (`DevTool`) while rendering a different component. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
react-hook-form/devtools#208 · 13 comentarios · 21 reacciones ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
react-hook-form/devtools#207 · 6 comentarios · 1 reacción ·
Todos los issues de react-hook-form/devtools
Issues similares
-
Type/Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
OpenNSW/nsw-srilanka#497 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
0xMiden/bridge-portal#132 ·
-
react-doctor severity:warning tech-debt
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
digidem/comapeo-cloud-app#403 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100