Вы должны переместить всю логику, имеющуюся в функции render
, в componentDidMount
, но там, где вы возвращаете jsx
, вы получите setState
, чтобы ваше состояние представляло то, что вы хотите визуализировать. , Тогда ваша render
функция должна иметь только jsx
, который будет отображать данные, которые вы установили в вашем состоянии (в componentDidMount
)
Дополнительное замечание: изначально кажется странным, что вы будете звонить setState
после того, как компонент "смонтирован", но реагирует на любые вызовы setState
в componentDidMount
до того, как он действительно отобразит
Это будет выглядеть примерно так -
class SearchPage extends React.Component {
state = {
personId: '',
person_results: []
}
componentDidMount(){
let pid;
if (this.props.results.length > 0){
if (this.props.results[0].results[0].media_type === 'person'){
person_results = this.props.results[0].results[0];
pid = person_results.id;
} else if (this.props.results[0].results[1].media_type === 'person'){
person_results = this.props.results[0].results[1];
pid = person_results.id;
} else if (this.props.results[0].results[2].media_type === 'person'){
person_results = this.props.results[0].results[2];
pid = person_results.id;
}
}
this.setState({
personId: pid,
person_results
})
}
render(){
return (
<div className='container-fluid'>
<div className='row'>
{this.state.personId}
{this.state.person_results}
</div>
</div>
)
}
}
const mapStateToProps = (state) => {
return {
results: state.movTv.results,
person: state.movTv.personInfo
}
}
export default connect(mapStateToProps, { fetchPersonInfo })(SearchPage);
это может быть реорганизовано больше, но это даст вам представление о том, с чего начать