我试图覆盖从异步函数返回的对象的方法,但出现了此错误;dataProvider.getList is not a function
我试图用这种方式简单地扩展对象,但显然不是正确的
function App() {
const [dataProvider, setDataProvider] = useState(null);
useEffect(() => {
const buildDataProvider = async () => {
//this must to be called with await
const dataProvider = await buildHasuraProvider({
clientOptions: { uri: 'http://localhost:8080/v1/graphql' }
});
//this object should be the same as above but with an overridend method (getList)
const extendeDataProvider = {
...dataProvider,
getList: (resource, params) => {
if (resource === 'apikeys') {
//implementation missing
} else {
// fallback to the default implementation
return dataProvider.getList(resource, params);
}
}
}
setDataProvider(() => extendeDataProvider);
};
buildDataProvider();
}, []);
if (!dataProvider) return <p>Loading...</p>;
return (<Admin dataProvider={dataProvider} />)
}
export default App;
我发现问题出在您的回退实现中:
// fallback to the default implementation
return dataProvider.getList(resource, params);
你也可以通过这种方式来证明——
console.log(typeof(dataProvider.getList))