kea-react
Version:
Componentes comunes de react
51 lines (43 loc) • 1.75 kB
Markdown
Contiene los componentes que ayudar a la creacion de la edicion de una sola entidad
Un *form* es un componente que modifica a un modelo de edición de una
entidad.
La unica función de un componente de esta categoria es mostrar los datos del
modelo y reportar un evento cuando estos cambien.
Este componente no tiene estado y expone al menos dos *props:*
```
/**Datos del modelo*/
model : TModel;
/**Es llamado cuando alguna propiedad del modelo varia*/
onModelChanged: (newValue : TModel) => void;
```
Para los campos de un form puede utilizar los componentes de la carpeta
`base/fields/`
Recuerde no modificar los datos de `props.model` directamente ya que este
objeto se considera inmutable.
Para llamar al `onModelChanged` utilice el método `handleModelPropertyChanged` en el
archivo `base/edit/form`. Este método se encarga de crear la copia inmutable del modelo
ya que no debemos de modificarlo.
Ejemplo de un form:
```jsx
interface FormProps extends form.FormProps<Models.Customer> {
/**True para volver la forma como solo lectura */
isReadOnly?: boolean;
}
/**Forma de edición de un cliente */
class ClienteForm extends React.Component<FormProps, {}> {
handleModelPropertyChanged = (newValue: any, key: string) => form.handleModelPropertyChanged(newValue, key, this.props);
render() {
return (
<div className="row">
<Text label="Nombre"
value={this.props.model.Nombre}
onValueChanged={v => this.handleModelPropertyChanged(v, 'Nombre')}
isReadOnly={this.props.isReadOnly}
/>
</div>
);
}
}
```