Resolving Promise Array - PullRequest
       11

Resolving Promise Array

0 голосов
/ 14 января 2020

Я использую ReactJS и топор ios Я пытаюсь получить данные клиента

Реагировать: 16.5.2
ax ios: 0.18.0

У меня есть класс с конструктором:

constructor(props) {
  super(props);
  this.state = {
    reactTable: reactTableData(),
    reactBootstrapTable: reactBootstrapTableData(),
    dataCustomer: customerData(),
};

метод customerData () :

export function customerData(){
  // axios get  
  return axios.get("my/url")
  .then(res => {
    let data = res.data.data;
    console.log(data);
    return data
  })
  .catch(err => {
    console.log(err);
  })
}

когда я console.log(this.state); Я получил Обещание такие данные:

enter image description here

Я все еще новый с ReactJS и я надеюсь, что вы можете мне помочь,
спасибо.

Ответы [ 3 ]

2 голосов
/ 14 января 2020

Это в значительной степени нормально, потому что вы возвращаете обещание из вашей функции customerData. Я бы решил вашу проблему так:

constructor(props) {
  super(props);
  this.state = {
    reactTable: reactTableData(),
    reactBootstrapTable: reactBootstrapTableData(),
    dataCustomer: [],
  }
  this.initCustomerData()
}

async initCustomerData() {
  this.setState({
    customerData: await customerData()
  })
}
0 голосов
/ 14 января 2020

constructor(props) {
  super(props);
  this.state = {
    reactTable: reactTableData(),
    reactBootstrapTable: reactBootstrapTableData(),
  };

  this.initCustomerData();
}

initCustomerData = () => {
  customerData().then((data) => {
   this.setState({ dataCustomer: data })
  });
}
0 голосов
/ 14 января 2020

Your customerData вернет только Обещание, которое необходимо решить. Это обещание устанавливается в dataCustomer.

. Вы можете вызвать метод customerData внутри другого метода, который может быть вызван из constructor, или любого другого метода жизненного цикла. Разрешите обещание и затем вызовите метод setState, чтобы установить желаемое значение.

...