Я использую ответный маршрутизатор и перейдите к компоненту, который получает идентификатор в URL-адресе и должен использовать этот идентификатор для получения данных с сервера с помощью действия.Где загрузить данные сервера
В данный момент я вызываю создателя действия в крючок componentWillMount
.
Это работает до сих пор, но приносит проблему. В методе рендеринга я должен проверить, действительно ли существует myData
со всеми его атрибутами, прежде чем я смогу реально выполнить рендеринг.
@connect(state => {myData: state.etc.myData})
export default class extends React.Component {
componentWillMount =() => {
this.props.dispatch(
ActionCreators.getData(this.props.params.id)
)
}
render() {
if (this.props.myData.hasNotLoaded) return <br/>
...
}
}
Есть еще один способ, чтобы получить данные в хранилище перед визуализацией без ручных проверок?
onEnter должен использоваться только для перенаправления, поскольку он блокирует отображение страницы, компонентWillMount, по-видимому, является местом для извлечения данных рендеринга. https://github.com/ReactTraining/react-router/issues/1389 – mibbit
@mibbit и насколько это может быть плохо, если в этом случае мы будем запускать действие sync redux? Вся выборка данных будет выполняться вне этого взаимодействия, а загрузка страницы не будет задерживаться –