У меня есть компонент Parent
и компонент Child
, и у меня есть действие, которое запускает некоторый вызов API в дочернем компоненте, а в componentWillMount
я проверяю условие if
на некоторые props
, которые исходят от родителя, и выполняю некоторый триггер. Если условие истинно, я запускаю метод, который отображает новый компонент. Проблема в том, что в дочернем компоненте в componentWillmount
props
this.props.person
и this.props.notFound
не определены, но мне нужно дождаться запроса API перед рендерингом и проверить этот реквизит.
родитель:
export class Parent extends Component {
state = {
id: this.props.id || ''
}
render() {
<Child value={this.state.value} onNotValidId={() => this.renderNewComponent()} />
}
}
export const mapStateToProps = state => ({
tagStatus: state.tagAssignment.status,
persons: state.entities.persons,
)}
Дети:
export class Child extends Component {
componentWillMount = () => {
this.props.init(parseInt(this.props.id, 16), this.props.accessToken)
if (!this.props.notFound && !this.props.person)
this.props.onNotValidId()
}
render = () => {
return (
<div>Some body</div>
)
}
}
export const mapStateToProps = state => ({
status: state.tagAssignment.status,
person: state.entities.persons[state.tagAssignment.assignee],
accessToken: state.auth.accessToken,
})
export const mapDispatchToProps = dispatch => ({
init: (id, accessToken) => dispatch(checkId(id, accessToken)),
})
export default compose(
connect(mapStateToProps, mapDispatchToProps),
)(Child)