Мой компонент:
class Admin extends React.Component {
constructor(props) {
super(props);
}
uploadFile = async (event, refetch) => {
await uploadFileToBucket(event, true);
refetch(); // refetch is undefined
};
render() {
return (
<GraphQlDataFetcher query = {getObjectsInDefaultBucket()}>
{(data, refetch) => (
<Files files = {data.bucketObjects}/>
<input type = "file" onChange = {(refetch) => this.uploadFile(event, refetch)}/>
)}
</GraphQlDataFetcher>
);
}
}
export default Admin
Когда загрузка файла будет завершена, я хочу повторно загрузить запрос graphql. Поэтому мне нужно отправить функцию повторной загрузки на мой uploadFile. Как мне это сделать?





Я думаю, что делаю это:
<input type = "file" onChange = { (refetch) => this.uploadFile(event, refetch) } />
вы переопределяете метод refetch, переданный GraphQlDataFetcher, можете ли вы попробовать сделать это вместо этого?
<input type = "file" onChange = { event => this.uploadFile(event, refetch) } />
0xc14m1z ответ правильный.
Вот более «чистый» синтаксис для решения вашей проблемы путем предварительной настройки вашей функции:
<input type = "file" onChange = {this.uploadFile(refetch)} />
И ваша функция:
uploadFile = async refetch => event => {
Вход onChange дает вам только событие, но не повторную выборку. Чтобы получить последние данные, выполните вызов fetch, как если бы вы выполняли uploadFileToBucket