以扩展从异步函数返回的对象



我试图覆盖从异步函数返回的对象的方法,但出现了此错误;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))

最新更新