рендеринг компонента внутри цикла в реагирующем - PullRequest
0 голосов
/ 17 ноября 2018

Может кто-нибудь помочь мне понять, почему renderPosesList () не рендерит 'Text'. Я получаю значение, если я раскомментирую 'Text' внутри render (). this.renderPosesList () печатает данные в консоли, но я вижу пустую страницу на экране. Я добавил атрибут «ключ», глядя на другие посты, но это не помогло. Со временем я заменю текст пользовательским компонентом.

renderPosesList() {
    return this.state.posesDictionary.forEach((pose, index) => {
    console.log("pose > " + index + " > " + pose.key);
    <Text key={index}>{pose.key}</Text>;
  });
}

render() {
  if (this.state.posesDictionary.length > 0) {
    let p = this.state.posesDictionary[0];
    return (
      <View>
        {/* <Text>{p.key}</Text> */}
        {this.renderPosesList()}
      </View>
    );
  } else {
    return (
      <View>
        <Text> Loading..</Text>
      </View>
    );
  }
}

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

forEach не возвращает значение, используйте .map для возврата HTML-тега

 renderPosesList = () => {
    return this.state.posesDictionary.map((pose, index) => {
      console.log("pose > " + index + " > " + pose.key);
      return(
      <Text key={index}>{pose.key}</Text>
      );
    });
  }
0 голосов
/ 17 ноября 2018
renderPosesList() {
    return this.state.posesDictionary.map((pose, index) => {
    console.log("pose > " + index + " > " + pose.key);
    return <Text key={index}>{pose.key}</Text>;
  });
}

Что вы пропустили, так это то, что вы ничего не возвращаете из функции карты, у вас ничего не может быть в вашем представлении, пока оно не будет возвращено как дочерний узел реагирования, который в данном случае равен

...