Динамическое отображение содержимого из функции map map в React Native

Я пытаюсь получить данные из массива и использовать функцию карты для рендеринга содержимого. Посмотрите

**{this.lapsList()}** 

и связанный с ним

**lapsList()** 

чтобы понять, что я пытаюсь сделать. В результате ничего не отображается (Views in view и т.д.) Вот мой упрощенный код:

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);

}

}

Ответ 2

Попробуйте переместить функцию lapsList из своего класса и в вашу функцию рендеринга:

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>
  )
}

Ответ 3

вы забыли возврат в начале функции lapsList()

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

Ответ 4

Как я могу представить данные и отобразить их, если форма данных, как это?

export default [
    {
        videoId: "0pdtVdfj17Q",
        playlistId: "OLAK5uy_kCvtbP2jVjcNW3nrA1rsZhprJgIcTgMKs",
        imgLarge: "https://i.ytimg.com/vi/0pdtVdfj17Q/maxresdefault.jpg",
        imgSmall: "https://i.ytimg.com/vi/0pdtVdfj17Q/maxresdefault.jpg"
    },
    {
        videoId: "3hfM9pmL3BA",
        playlistId: "OLAK5uy_kCvtbP2jVjcNW3nrA1rsZhprJgIcTgMKs",
        imgLarge: "https://i.ytimg.com/vi/3hfM9pmL3BA/hqdefault.jpg",
        imgSmall: "https://i.ytimg.com/vi/3hfM9pmL3BA/hqdefault.jpg"
    },
    {
        videoId: "55ow-gO9MDg",
        playlistId: "OLAK5uy_kCvtbP2jVjcNW3nrA1rsZhprJgIcTgMKs",
        imgLarge: "https://i.ytimg.com/vi/55ow-gO9MDg/hqdefault.jpg",
        imgSmall: "https://i.ytimg.com/vi/55ow-gO9MDg/hqdefault.jpg"
    }
]

Ответ 5

lapsList() {

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

Вы забыли вернуть карту. этот код решит проблему.