function getTopicsData(tids, Uid) {
const result = tids.map(async tid => {
// если hgetall возвращает промис
const topics = await redis.hgetall(`topic:${tid}`).catch(err => console.error(err));
// если sismebmer вовзращает промис
const subscriber = await redis.sismember(`topic:${tid}:subscribers`, Uid).catch(err => console.error(err));
topics.subscriber = !!subscriber
return topics; // или что вам там надо в результате? В общем, то что надо нужно вернуть тут.
})
return Promise.all(result);
}
() => this.someCallback()
- это сохранит эквивалентность props и React не будет лишний раз вызывать render. Напримерclass MyComponent extends React.Component {
onBtnClick = (event) => {
// correct this
};
onBtnMouseUp() {
// invalid this
}
render() {
return <button onClick={this.onBtnClick} onMouseUp={this.onBtnMouseUp}>hello</button>;
}
}
class SearchResults extends React.PureComponent {
render() {
const { target, results } = this.props
return (
<div className="SearchResults">
{_
.chain(results)
.map(word => word.split(target))
.map(parts => _.reduce(
parts,
(res, part) => res.length > 0
? [ ...res, <span className="highlight">{target}</span>, part ]
: [ part ]
,
[]
))
.map(word => <span className="word">{word}</span>)
.value()
}
</div>
)
}
}
.map(word => word.split(target))
.map(parts => _.reduce(
parts,
(res, part) => res.length > 0
? [ ...res, <span className="highlight">{target}</span>, part ]
: [ part ]
,
[]
))
.map(word => <span className="word">{word}</span>)
class ListItem extends React.PureComponent {
handleClick = () => {
const { src, label, onClick } = this.props
return onClick(src, label)
}
render() {
const { src, label, onClick } = this.props
return (
<li onClick={onClick && this.handleClick}>
<img src={src} />
<span>{label}</span>
</li>
)
}
}
<ListItem src="/uploads/0.png" label="Test" onClick={this.select} />