Как выполнить более одного запроса вactjs и awsamplify - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь составить список более чем одной базы данных Dynamo в React.js.Я попытался определить оба компонента в разных классах и импортировать их, которые не работали, затем я попытался определить оба компонента в том же классе, который выдает мне ошибку

TypeError: this.state.patients2 is undefined

Вот мои компоненты

 state = { patients2: [] }


 async componentDidMount() {
    try {
      const apiData = await API.graphql(graphqlOperation(listPatients2))
      const patients2 = apiData.data.listPatients2.items
      this.setState({ patients2 })
    } catch (err) {
      console.log('qqqqqqqqqqqqqqqqqq ', err)
    } 
  } 

 state = { beraters: [] }
  async componentWillMount2() {
    try {
      const apiData = await API.graphql(graphqlOperation(listBeraters))
      const beraters = apiData.data.listBeraters.items
      this.setState({ beraters })
      console.log(beraters)
    } catch (err) {
      console.log('qqqqqqqqqqqqqqqqq ', err

)
    }
  } 

и здесь я отображаю результаты

<h1>Meine Daten</h1>


    {
          this.state.beraters.map((rest, i) => (
            <div style={styles.item}>
              <p style={styles.Vorname}>{rest.Vorname}</p>
              <p style={styles.Nachname}>{rest.Nachname}</p>
              <p style={styles.Strasse}>{rest.Strasse}</p>
              <p style={styles.Hausnr}>{rest.Hausnr}</p>
              <p style={styles.Ort}>{rest.Ort}</p>
              <p style={styles.Postleitzahl}>{rest.Postleitzahl}</p>
              <p style={styles.Telefonnummer}>{rest.Telefonnummer}</p>
            </div>
          ))
         }
      </div>

<div >
    {
          this.state.patients2.map((rest, i) => (
            <div style={styles.item}>
              <l style={styles.Vorname}>{rest.Vorname}</l>
              <l>  </l>
              <l style={styles.Nachname}>{rest.Nachname}</l>
            </div>
          ))


        }
      </div>

Любая помощь очень ценится.Спасибо!

1 Ответ

0 голосов
/ 15 марта 2019

Ваши пациенты2 не определены, поскольку вы перезаписываете значения состояния.Просто определите ваши массивы в состоянии вместе, а также вызовите ваши запросы одновременно.Примерно так:

state = {
  beraters: [],
  patients2: []
}
async componentDidMount() {
    try {
      const apiDataPatients = await API.graphql(graphqlOperation(listPatients2))
      const apiDataBeraters = await API.graphql(graphqlOperation(listBeraters))
      const patients2 = apiDataPatients.data.listPatients2.items
      const beraters = apiDataBeraters.data.listBeraters.items
      this.setState({ beraters, patients2 })
    } catch (err) {
      console.log('Error:', err)
    } 
}
...