【发布时间】:2020-03-21 06:18:23
【问题描述】:
我正在尝试将 <ReferenceInput> 元素与自定义 dataProvider 一起使用并收到此错误:
Missing translation for key: "dataProvider is undefined"
即使我的数据提供者看起来像这样,也会发生这种情况:
import jsonServerProvider from "ra-data-json-server";
import { adminPageTokenFetch } from "APIServices/CRUD";
const dataProvider = jsonServerProvider("/api", adminPageTokenFetch);
export const myDataProvider = {
...dataProvider
}
使用<ReferenceInput>的组件示例:
export const SessionEdit = (props: any) => {
return (
<Edit {...props}>
<SimpleForm>
<ReferenceInput source="film" reference="films">
<SelectInput optionText="name" />
</ReferenceInput>
<DateInput source="dateTime" />
<NumberInput source="price" />
<ReferenceInput source="genre" reference="genres">
<SelectInput optionText="name" />
</ReferenceInput>
</SimpleForm>
</Edit>
);
};
这是我的索引页:
export const AdminPage = (props: { lang: string }) => {
const messages = {
ru: russianMessages,
en: englishMessages
} as any;
return (
<Provider store={createAdminStore({ myDataProvider, history })}>
<Admin
dataProvider={myDataProvider}
history={history}
title={props.lang === "ru" ? "Админ панель" : "My admin"}
i18nProvider={polyglotI18nProvider(() => messages[props.lang])}
>
<Resource
name="sessions"
list={SessionList}
edit={SessionEdit}
create={SessionCreate}
/>
<Resource name="translations" list={TranslationList} />
</Admin>
</Provider>
);
};
这里是createAdminStore函数:
export default ({ dataProvider, history }: any) => {
const reducer = combineReducers({
admin: adminReducer,
router: connectRouter(history)
});
const saga = function* rootSaga() {
yield all([adminSaga(dataProvider)].map(fork));
};
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
reducer,
compose(applyMiddleware(sagaMiddleware, routerMiddleware(history)))
);
sagaMiddleware.run(saga);
return store;
};
它在 UI 上的外观:
其他组件仍然可以正常工作。
【问题讨论】:
-
我们需要仔细查看您的
translation文件。你能分享其中的一部分吗? -
@MwamiTovi , 你的意思是我传入
admin组件的组件吗?如果是这样,我已经编辑了我的问题。 -
此错误似乎源自链接到
dataProvider的translation。我认为共享与这些链接的文件可能会更有帮助。也许在您使用自定义myDataProvider的地方共享文件 -
@MwamiTovi,我正在使用
createAdminStore函数并将其结果传递给admin组件。刚刚将所有这些内容添加到问题中。 -
从您的代码中,您正在使用
changing locale (language) at Runtime。请在中更新此行 i18nProvider={polyglotI18nProvider((locale) => messages[locale])}。让我知道会发生什么。
标签: reactjs react-admin