fix nested field updates
This commit is contained in:
parent
fddbf8f7f0
commit
7bcb16d5e6
@ -21,6 +21,13 @@ export default class ObjectControl extends Component {
|
|||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In case the `onChange` function is frozen by a child widget implementation,
|
||||||
|
* e.g. when debounced, always get the latest object value instead of usin
|
||||||
|
* `this.props.value` directly.
|
||||||
|
*/
|
||||||
|
getObjectValue = () => this.props.value;
|
||||||
|
|
||||||
controlFor(field) {
|
controlFor(field) {
|
||||||
const { onAddAsset, onRemoveAsset, getAsset, value, onChange } = this.props;
|
const { onAddAsset, onRemoveAsset, getAsset, value, onChange } = this.props;
|
||||||
if (field.get('widget') === 'hidden') {
|
if (field.get('widget') === 'hidden') {
|
||||||
@ -38,7 +45,7 @@ export default class ObjectControl extends Component {
|
|||||||
field,
|
field,
|
||||||
value: fieldValue,
|
value: fieldValue,
|
||||||
onChange: (val, metadata) => {
|
onChange: (val, metadata) => {
|
||||||
onChange((value || Map()).set(field.get('name'), val), metadata);
|
onChange((this.getObjectValue() || Map()).set(field.get('name'), val), metadata);
|
||||||
},
|
},
|
||||||
onAddAsset,
|
onAddAsset,
|
||||||
onRemoveAsset,
|
onRemoveAsset,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user