У меня есть компонент редактирования кампании, вместе со списком урлов, ей принадлежащих, и я делаю in-place возможность редактирования некоторых полей урлов. Под списком урлов вывожу URLEditableButtons где кнопки Save и Cancel.
export default () => {
const urlsGridRef = React.createRef();
return <Edit>
<>
<SimpleForm>
<TextInput source="comment" multiline={true} />
<BooleanInput source="enabled" />
</SimpleForm>
<ReferenceManyField label="URLs" reference="urls" target="campaign_id" sx={{mt:5}}>
<Datagrid ref={urlsGridRef}>
<NumberField source="id" />
<UrlButton />
<TextField source="campaignId" />
<EditableField name="url" type="text" label="URL" />
<EditableField name="weight" type="number" label="Weight" />
<DateField source="updatedAt" />
<DateField source="createdAt" />
</Datagrid>
</ReferenceManyField>
<URLEditableButtons grid={urlsGridRef} />
</>
</Edit>;
}
В компоненте URLEditableButtons хочу написать обработчики кнопок Save и Cancel - им нужна будет ссылка на таблицу урлов, я ее передаю через props. Однако, ссылка оказывается равна null.
export default (props) => {
const hash = getHashQuery();
const campaign_id = hash ? hash.campaign_id : 0;
const gridTable = props.grid.current; // == null
const cancelEdit = () => {
// need to use grid here
};
return <div data-id="{campaign_id}" >
<Button size="small" variant="contained" onClick={cancelEdit} className="cancel">
<span><BlockIcon /> CANCEL EDIT</span>
</Button>
</div>;
}
Что я делаю не так?