Как мне опубликовать в API с параметром "COUNTRY_ID", пока нет событий - PullRequest
0 голосов
/ 24 сентября 2019

это мое состояние

constructor(props){
    super(props)
    this.state = {
      merchants:[],
    }
  }

и это жизненный цикл реакции

componentWillMount() {
    return this.setState({
      COUNTRY_ID: this.props.resGet('country_id')
    })
  }

  async componentDidMount(){
    await Api.post('language/merchant', this.state)
    .then((response) => {
      let responseJson = response
      console.log(responseJson)
      if(responseJson.data.STATUS_CODE === '200'){
        this.setState({
          merchants:response.data.DATA
        })
      }
    })
  }

Это начальное состояние со свойством "merchant []", тогда "merchant []" будет заполненорезультаты запроса, который будет отправлен в API с параметром "COUNTRY_ID", как ввести "COUNTRY_ID" в состояние, после чего я отправлю параметр " COUNTRY_ID " в API?

1 Ответ

2 голосов
/ 24 сентября 2019

ComponentWillMount

считается устаревшим, и вы должны избегать их в новом коде.

componentDidMount будет выполнено сразу после renderкоторый будет выполняться сразу после componentWillMount, поэтому, если componentWillMount имеет асинхронные функции, вы, вероятно, не найдете их результатов при вызове componentDidMount,

Вы можете поместить то, что у вас есть в componentWillMountвнутри componentDidMount как:

async componentDidMount(){
  const countryID = this.props.resGet('country_id');

  await Api.post('language/merchant', countryID)
  .then((response) => {
    let responseJson = response
    console.log(responseJson)
    if(responseJson.data.STATUS_CODE === '200'){
      this.setState({
        merchants:response.data.DATA,
        COUNTRY_ID: countryID
      })
    }
  })
}
...