it-swarm.com.de

Rendern Sie Inhalte dynamisch aus einer Array-Map-Funktion in React Native

Ich versuche, Daten aus einem Array abzurufen und die Map-Funktion zum Rendern von Inhalten zu verwenden. Ansehen 

**{this.lapsList()}** 

und die damit verbundenen 

**lapsList()** 

funktion zu verstehen, was ich versuche zu tun. Das Ergebnis ist, dass nichts angezeigt wird (Ansichten unter Ansicht usw.). Hier ist mein vereinfachter Code:

class StopWatch extends Component {

constructor(props) {
  super(props);

  this.state = {
    laps: []
  };
}

render() {
  return (
    <View style={styles.container}>
        <View style={styles.footer}>
          <View><Text>coucou test</Text></View>
          {this.lapsList()}
        </View>
    </View>
  )
}

lapsList() {

    this.state.laps.map((data) => {
      return (
        <View><Text>{data.time}</Text></View>
      )
    })

}

_handlePressLap() {

  console.log("press lap");

  if (!this.state.isRunning) {

    this.setState({
      laps: []
    })

    return

  }

  let laps = this.state.laps.concat([{'time': this.state.timeElapsed}]);

  this.setState({
      laps: laps
  })

  console.log(laps);

}

}

16
Xavier C.

Vergessen Sie nicht, return das zugeordnete Array wie:

lapsList() {

    return this.state.laps.map((data) => {
      return (
        <View><Text>{data.time}</Text></View>
      )
    })

}

Referenz für die map()-Methode: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

34
Cherniv

Versuchen Sie, die Funktion lapsList aus Ihrer Klasse in Ihre Renderfunktion zu verschieben:

render() {
  const lapsList = this.state.laps.map((data) => {
    return (
      <View><Text>{data.time}</Text></View>
    )
  })

  return (
    <View style={styles.container}>
      <View style={styles.footer}>
        <View><Text>coucou test</Text></View>
        {lapsList}
      </View>
    </View>
  )
}
5
Nader Dabit

sie haben die Rückkehr am Anfang der Funktion lapsList() vergessen

lapsList() {
 render(
  this.state.laps.map((data) => {
    return (
      <View><Text>{data.time}</Text></View>
    );
  })
 );
}
1
Franz Medrano
lapsList() {

    return this.state.laps.map((data) => {
      return (
        <View><Text>{data.time}</Text></View>
      )
    })
}

Sie haben vergessen, die Karte zurückzugeben. Dieser Code behebt das Problem.

0
Codemaker