Хорошо, поэтому я обнаружил, что решение состоит в том, чтобы создать пользовательское действие и отправить действие с помощью метода redux-form
*1001*.
Используйте FormDataConsumer
, чтобы получить formData и метод отправки.
+ import { FormDataConsumer, REDUX_FORM_NAME } from 'react-admin';
+ import { change } from 'redux-form';
+ import {changeImgUrl} from './actions';
...
const uploadImg = ( params, dispatch ) => {
result = await Promise.resolve(yourUploadImgFunc(params))
.then( res => return changeImgUrl(res) )
dispatch(change(REDUX_FORM_NAME, 'image', result))
}
const ProductEdit = ({ classes, ...props }) => (
<Edit {...props} title={<ProductTitle />}>
<TabbedForm>
<FormTab label="resources.categories.tabs.details" path="details">
<FormDataConsumer>
{({ formData, dispatch, ...rest }) => (
<Fragment>
<ImageInput source="image" label="Related pictures" accept="image/*" options={{onDrop: (params) => uploadImg(params, dispatch)}}>
<ImageField source="image" src="url" title="title" />
</ImageInput>
)}
</Fragment>
</FormDataConsumer>
</FormTab>
</TabbedForm>
...
Затем определите новое действие:
// actions.js
export const CHANGE_IMG_URL = 'CHANGE_IMG_URL';
export const changeImgUrl = img_url => ({
type: CHANGE_IMG_URL,
url: img_url
});
Сводка:
1. соберите реквизы dispatch
от редукса от FormDataConsumer
.
2. реакции-администратора. -form change
метод для создания действия с вашим настраиваемым действием.
Не уверен, что это лучший способ, но он обязательно работает. Надеюсь, что это поможет любому, кто пытается с настройкой на реакции-администратора.