我必须在这里遗漏一些东西,但找不到
我们可以看到我的所有结果都已加载到站字段但该字段下没有显示自动完成建议的内容。我也尝试了一个
SelectInput
组件,列表选项为空
我的创建和编辑部分的代码与以下代码几乎相同:
import React, {FC} from "react";
import {
CreateGuesser,
InputGuesser
} from "@api-platform/admin";
import {ReferenceInput, AutocompleteInput, FilterProps} from "react-admin";
const RefuelsCreate : FC<Omit<FilterProps, 'children'>> = props => (
<CreateGuesser {...props}>
<InputGuesser source="pricePerLiter" />
<ReferenceInput
source="stationId"
reference="gaz_stations"
label="Station"
filterToQuery={searchText => ({ address: searchText })}
>
<AutocompleteInput optionText="address" />
</ReferenceInput>
<InputGuesser source="totalRefuelPrice" />
<InputGuesser source="kmTravelled" />
</CreateGuesser>
);
export default RefuelsCreate;
编辑和创建部分都不适用于此ReferenceInput
在我的 App.tsx 中,我将此组件添加到组件中ResourceGuesser
。
import React from "react";
import { Redirect, Route } from "react-router-dom";
import { HydraAdmin, ResourceGuesser, hydraDataProvider as baseHydraDataProvider, fetchHydra as baseFetchHydra, useIntrospection } from "@api-platform/admin";
import parseHydraDocumentation from "@api-platform/api-doc-parser/lib/hydra/parseHydraDocumentation";
import authProvider from "./Auth/AuthProvider";
import { Layout } from './layout'
import customRoutes from './routes';
import themeReducer from './themeReducer';
import polyglotI18nProvider from 'ra-i18n-polyglot';
import englishMessages from './i18n/en';
import { Dashboard } from './dashboard';
import refuels from './refuels';
const i18nProvider = polyglotI18nProvider(locale => {
if (locale === 'fr') {
return import('./i18n/fr').then(messages => messages.default);
}
// Always fallback on english
return englishMessages;
}, 'en');
const entrypoint = `${process.env.REACT_APP_API_URL}`;
const getHeaders = () => localStorage.getItem("token") ? {
Authorization: `Bearer ${localStorage.getItem("token")}`,
} : {};
const fetchHydra= ((url: any, options = {}) =>
baseFetchHydra(url, {
...options,
headers: getHeaders,
})
);
const RedirectToLogin = () => {
const introspect = useIntrospection();
if (localStorage.getItem("token")) {
introspect();
return <></>;
}
return <Redirect to="/login" />;
};
const apiDocumentationParser = async (entrypoint:any) => {
try {
const { api } = await parseHydraDocumentation(
entrypoint,
{
// @ts-ignore
headers: getHeaders
}
);
return { api };
} catch (result) {
if (result.status === 401) {
// Prevent infinite loop if the token is expired
localStorage.removeItem("token");
return {
api: result.api,
customRoutes: [
<Route path="/" component={RedirectToLogin} />
],
};
}
throw result;
}
};
const dataProvider = baseHydraDataProvider(entrypoint, fetchHydra, apiDocumentationParser, true);
export default () => (
<HydraAdmin
title="ease daily app"
customReducers={{ theme: themeReducer }}
dataProvider={ dataProvider }
authProvider={ authProvider }
entrypoint={ entrypoint }
layout={Layout}
dashboard={ Dashboard }
customRoutes={customRoutes}
i18nProvider={i18nProvider}
>
<ResourceGuesser name="refuels" list={refuels.list} create={refuels.create} edit={refuels.edit}/>
</HydraAdmin>
);
根据这里的文档:https ://api-platform.com/docs/admin/handling-relations/
我做得正确,它应该可以工作,但为什么没有显示任何建议?