Javascript 组件不访问上下文

Javascript 组件不访问上下文,javascript,reactjs,Javascript,Reactjs,我是新手,如果我问了一个愚蠢的问题,请原谅我。 其思想是从上下文访问tweets数组,找到匹配的tweet,然后将其设置为组件状态以访问数据 然而,tweets数组的结果是空的,尽管我确信它填充了tweets const { tweets } = useContext(TweeetterContext) const [tweet, setTweet] = useState({}) useEffect(() => { loadData(match.params

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

然而,tweets数组的结果是空的,尽管我确信它填充了tweets

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

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

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

试着这样使用它,看看它是否解决了问题:

useEffect(() => {
   loadData(match.params.id, tweets)
}, [match.params.id, tweets])
另外,不确定您的
useffect
实际上在做什么,因为它没有在任何地方分配结果,但我假设它只是为了代码片段的清晰性而被删除