【问题标题】:How to solve TypeError: undefined is not an object (evaluating 'rss.items[i].title')?如何解决 TypeError: undefined is not an object (evaluate 'rss.items[i].title')?
【发布时间】:2019-11-28 15:51:38
【问题描述】:

我不断收到这个TypeError: undefined is not an object (evaluating 'rss.items[i].title') 错误。但是,当我运行console.log(this.state.feed) 时,它运行良好。谁能指出我做错了什么?

state = {
    feed: {}
 }

  fetchRSSFeed() {
    return fetch('http://www.nasa.gov/rss/dyn/breaking_news.rss')
    .then((response) => response.text())
    .then((responseData) => rssParser.parse(responseData))
    .then((rss) =>  { 
        for(let i = 0; i < 5; i++) {
        this.setState(prevState => ({
            ...prevState,         
            feed: rss.items[i].title
        }))
    })
  }
  }

    render() {
      {this.fetchRSSFeed()}
      // console.log(this.state.feed); // Console log here works. It logs out all the feed title

      MyStories = [{
        pic: require('../assets/images/news.jpg'), 
        title: Object.keys(this.state.feed).map(k => this.state.feed[k]),
        caption: 'caption'
      }]

      return (
        <SafeAreaView style={styles.container}>
          <Swiper
            cards={MyStories}
            renderCard={Card}
            infinite 
            backgroundColor="white"
            cardHorizontalMargin={0}
            stackSize={2} 
          />
        </SafeAreaView>
      )
    }
  }

【问题讨论】:

  • 你在哪里调用控制台日志?也在构造器内部获取?在 componentDidMount()、componentDidUpdate() 或 useEffect() 中尝试

标签: react-native rss typeerror expo rss-reader


【解决方案1】:
 componentDidMount() {
     this.fetchRSSFeed()
   }
  fetchRSSFeed() {
  return fetch('http://www.nasa.gov/rss/dyn/breaking_news.rss')
  .then((response) => response.text())
  .then((responseData) => rssParser.parse(responseData))
  .then((rss) =>  { 
    for(let i = 0; i < 5; i++) {
    this.setState(prevState => ({
        ...prevState,         
        feed: rss.items[i].title
    })) }) }
   }

render() {
   MyStories = [{
    pic: require('../assets/images/news.jpg'), 
    title: Object.keys(this.state.feed).map(k => this.state.feed[k]),
    caption: 'caption'
  }]
return (
    <SafeAreaView style={styles.container}>
      <Swiper
        cards={MyStories}
        renderCard={Card}
        infinite 
        backgroundColor="white"
        cardHorizontalMargin={0}
        stackSize={2} 
      />
    </SafeAreaView>
  )
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2019-05-29
    • 2022-10-17
    • 2020-08-15
    • 2019-03-25
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多