Один из возможных вариантов заключается в том, чтобы перенести это на заводский метод вместо использования конструктора.
После этого ваш заводский метод может вернуть Task<ServiceProvider>
, что позволит вам выполнить инициализацию асинхронно, но не возвращать сконструированные ServiceProvider
до тех пор, пока ImportantValue
не будет (асинхронно) вычисляться.
Это позволит вашим пользователям писать код наподобие:
var sp = await ServiceProvider.CreateAsync();
int iv = sp.ImportantValue; // Will be initialized at this point
В компоненте Button измените
const{onclick,className='',children}=props;
на
const{onClick,className='',children}=props;
Также кажется, что вы не установили список в состоянии, поэтому при попытке доступа к this.state.list. Фильтр выдаст ошибку.
onDismiss=(id)=>{
const deleteList=this.state.result.hits.filter(item=>item.objectID!==id);
this.setState({
result:{...this.state.result,hits:deleteList}
})
}
Ваша кнопка должна быть слегка изменена:
<button onClick={onClick} className={className} >{children}</button>
Обработчик должен ссылаться на переданные реквизиты, которые являются this.props.onClick, а не this.props.onclick (который вы имели).
Ошибка, с которой вы сталкиваетесь, может быть исправлена путем изменения файла App.js:
onDismiss = id => {
if (id) {
const deleteList = this.state.list.filter(item => item.objectID !== id);
// setting state of list to lastest deleteList
this.setState({
result:deleteList
})
}
}