首页 > 解决方案 > 组件未访问上下文

问题描述

我是新手,如果我问了一个愚蠢的问题,请原谅我。这个想法是从上下文访问 tweets 数组,找到匹配的 tweet,然后将其设置为组件的状态以访问数据。

但是,即使我确定它已经填充了推文,推文数组的结果也是空的

   const { tweets } = useContext(TweeetterContext)
   const [tweet, setTweet] = useState({})

   useEffect(() => {
      loadData(match.params.id, tweets)
   }, [])

   const loadData = (id, tweets) => {
      return tweets.filter(tweet => tweet.id == id)
   }
   return (stuff)
   }

标签: javascriptreactjs

解决方案


您可以很好地访问上下文,如果您可以共享您设置的代码,那就太好了tweets

除此之外,我在这里可能发现的潜在问题与useEffect功能有关。您正在使用来自外部上下文(match.params.idtweets)的变量,但您没有将它们设置为依赖项。因此,您useEffect将在最初创建组件时只运行一次。实际的问题可能是在初始创建之后tweets设置的(设置正确的值会有一些延迟,例如由于网络请求)。tweets

尝试像这样使用它,看看它是否能解决问题:

useEffect(() => {
   loadData(match.params.id, tweets)
}, [match.params.id, tweets])

另外,不确定您useEffect实际上在做什么,因为它没有在任何地方分配结果,但我假设它只是为了代码片段的清晰而被删除。


推荐阅读