javascript - 组件未访问上下文
问题描述
我是新手,如果我问了一个愚蠢的问题,请原谅我。这个想法是从上下文访问 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)
}
解决方案
您可以很好地访问上下文,如果您可以共享您设置的代码,那就太好了tweets
。
除此之外,我在这里可能发现的潜在问题与useEffect
功能有关。您正在使用来自外部上下文(match.params.id
和tweets
)的变量,但您没有将它们设置为依赖项。因此,您useEffect
将在最初创建组件时只运行一次。实际的问题可能是在初始创建之后tweets
设置的(设置正确的值会有一些延迟,例如由于网络请求)。tweets
尝试像这样使用它,看看它是否能解决问题:
useEffect(() => {
loadData(match.params.id, tweets)
}, [match.params.id, tweets])
另外,不确定您useEffect
实际上在做什么,因为它没有在任何地方分配结果,但我假设它只是为了代码片段的清晰而被删除。
推荐阅读
- bash - Base64 编码在脚本中不同
- javascript - 如何,在哪里,何时最好地计算一个值来有条件地渲染反应元素
- php - 在 nul 上调用成员函数 hasRoles()
- ios - iOS 13 模态演示的控制高度
- python - ModuleNotFoundError:没有名为“cv”的模块
- css - 如何将字体文件从 css 文件加载到 Angular 项目中
- programming-languages - 通用 OOP - 使用类构造函数/初始化内存使用实例化接口/协议
- javascript - jQuery:页面加载时隐藏 div 并显示带有过渡的 div
- c# - .net core 2.2 多重认证方案
- sql - Spark 数据帧上的 Pivot 仅在几列之一上返回意外的空值