redux - validaciones - validar campos en react
Componente de campos de formulario de Redux y validación (1)
Hay otra manera de hacerlo, seleccionando el valor específico usando los selectores de forma reducida ( http://redux-form.com/6.0.5/docs/api/Selectors.md/ ) desde la tienda redux en su mapStateToProps
y luego, renderizando condicionalmente ciertos componentes.
Sin embargo, creo que Fields
es exactamente lo que deberías usar en esta circunstancia. Creo que esa advertencia es en gran medida para advertir a la gente que no vaya y ponga su forma completa en Fields, tener esos 3 campos de rerender no es gran cosa.
El proceso de pensamiento que condujo a la creación de Fields
en primer lugar es probablemente la mejor manera de manejar esto: https://github.com/erikras/redux-form/issues/841
Estoy usando el redux para ocultar y mostrar componentes basados en un valor.
La documentación del formulario de Redux menciona lo siguiente:
La conexión a múltiples campos se debe usar con moderación, ya que requerirá que todo el componente se vuelva a renderizar cada vez que cambie alguno de los campos a los que está conectado. Esto puede ser un cuello de botella de rendimiento. A menos que sea absolutamente necesario, debe conectarse a sus campos individualmente con.
No estoy seguro de si mi solución para ocultar y mostrar campos basados en botones de opción es lo suficientemente buena como para usar Fields
den la advertencia de usar con moderación.
¿Puede aclarar si mi componente merece razones suficientes para usar Fields
? Si no, ¿cuál es una forma alternativa de implementar?
Además, ¿cómo implementan los fields
las validaciones?
<div>
<form>
<Fields
component={RadioButtonGroupField}
names={[''radioButtonGroup'', ''nameTextField'', ''nickNameTextField'']}
/>
</ form>
</div>
function RadioButtonGroupField(fields) {
return(
<div>
<RadioButtonGroupComponent
{...fields.radioButtonGroup.input}
{...fields.radioButtonGroup.meta}
/>
{
(fields.radioButtonGroup.input.value === ''name'' ||
fields.radioButtonGroup.input.value === ''both'') &&
<NameTextFieldComponent
{...fields.radioButtonGroup.input}
{...fields.radioButtonGroup.meta}
/>
}
{
(fields.radioButtonGroup.input.value === ''nickname'' ||
fields.radioButtonGroup.input.value === ''both'') &&
<NicknameTextFieldComponent
{...fields.radioButtonGroup.input}
{...fields.radioButtonGroup.meta}
/>
}
</div>
);
}