#javascript #reactjs
#javascript #reactjs
Вопрос:
Мне нужно использовать оболочку внутри компонента jsx. Я хочу, чтобы в элементе props вызывалась функция, которая будет решать, добавлять в props две функции обратного вызова или нет. Но это дает мне обещание взамен. Поэтому я не могу вызывать эти обратные вызовы в дочернем компоненте (. Что я должен изменить, чтобы это работало?
render() {
return(
<div className="aplication">
<Menu isLogined={(this.state.user)? true: false}
fullName={this.state.user amp;amp; this.state.user.name " " this.state.user.surname}/>
<div className="container border">
{(this.state.isLoading)? (<p>Loading...</p>)
: this.state.postList.map((post, i)=>
(<Post title = {post.title}
post= {post.text}
handlers={this.getHandlers(post.user_id)}
/>))
}
<NewPostForm add={this.add}/>
</div>
</div>
);
}
async getHandlers(postUserId) {
let result = await fetch('/api/user');
if(result.ok) {
let serverUser = await result.json();
let handlers = {edit: this.edit, remove: this.remove};
if (serverUser
amp;amp; (serverUser.role == 'admin'
|| serverUser.id == postUserId)) {
console.log(handlers);
return handlers;
}
}
return null;
}
Комментарии:
1. Асинхронная функция всегда возвращает обещание. Было бы лучше выполнять эти запросы при загрузке данных post и включать результаты в свое состояние перед рендерингом
2. Спасибо. Я был так переполнен(((
3. но я перебираю данные, отображающие его (( я не понимаю, где вызывать данные для конкретного элемента (