Передача реквизита через реагирующий маршрутизатор недоступна в componentDidMount? - PullRequest
0 голосов
/ 26 августа 2018

Я передал реквизиты через маршрутизатор реагирования, как это, упомянутому компоненту:

<BrowserRouter>
      <Switch>
          <Route path="/product-page" exact render={(props) => ( <ShopPages {...props} response={this.state.response}/>)}/>
      </Switch>
    </BrowserRouter>

Я хотел бы получить доступ к этому реквизиту в componentDidMount() примерно так:

componentDidMount() {
 console.log(this.props.response)
}

Пропорция this.props.response доступна в компоненте, который я могу console.log, он в render ().Я не уверен, почему в приведенном выше сценарии консоль показывает пустой массив.Я пытался проверить, доступны ли данные, затем показать данные как console.log( 'show', this.props.response && this.props.response) или, добавив async следующим образом:

async componentDidMount() {
const data = await this.props.response
}

Но это тоже ничего не делает.Любая помощь?

1 Ответ

0 голосов
/ 26 августа 2018

Я просто собираюсь предположить, что this.state.response - это не Обещание, а фактически данные, поскольку вы сказали, что это пустой массив, поэтому async / await ничего не будет делать.

ComponentDidMount ()запускается только один раз, когда компонент монтируется, и НЕ является местом для выполнения действий, основанных на обновлениях реквизита, которые могут произойти после монтирования.Поэтому я бы предложил передать обещание, и если это не вариант, сделайте что-то вроде

componentDidUpdate(prevProps, prevState) {
    if (!prevProps.response.length && this.props.response.length) {
      //Your code
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...