Field Component
The <Field> component recursively checks its children to see if they can be made into a <Control>. It then maps all of its props over to each created child <Control>.
If it reaches an unknown component, such as a <SpecialComponent>, it will stop recursing and leave the component as-is. In such cases, it is highly recommended to use <Control> over <Field> whenever possible.
Example:
<Field model="user.favoriteColors">
<select>
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
</Field>
The <Field> component takes in the same props as <Control>. For more information, see the documentation on the <Control> component.
Field-specific Prop Types
dynamic={...}
(Boolean): specifies whether the children inside <Field> are dynamic; that is, whether they are subject to change based on outside values.
Default value: true. To optimize for performance, set dynamic={false} for any <Field> that does not have dynamic children.
Examples:
// Does NOT have dynamic children
<Field model="user.favoriteColors" dynamic={false}>
<select>
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
</Field>
// DOES have dynamic children
<Field model="user.favoriteColors">
<select>
{showWhite && <option value="white">white</option>}
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
</Field>
// Does NOT have dynamic children
<Field model="user.state" mapProps={...} dynamic={false}>
<StatePicker />
</Field>
// DOES have dynamic children
const { showTerritories } = this.props;
<Field model="user.state" mapProps={...}>
<StatePicker territories={showTerritories} />
</Field>
getRef={() => ...}
(Function): Calls the callback provided to the getRef prop with the node instance. Similar to ref.
<Control.text
model="user.name"
getRef={(node) => this.attach(node)}
/>