【发布时间】:2020-09-07 17:38:24
【问题描述】:
Google 的灯塔工具给了我的应用一个令人震惊的性能分数,所以我一直在做一些调查。我有一个名为Home的组件
在Home里面我有useEffect(只有一个),看起来像这样
useEffect(() => {
console.log('rendering in here?') // called 14 times...what?!
console.log(user.data, 'uvv') // called 13 times...again, What the heck?
}, [user.data])
我知道您放置了 [] 的第二个参数,以确保仅在数据更改时才调用 useEffect,但这是我没有得到的主要部分。当我控制台日志user.data 前4 个控制台日志是空数组。接下来的 9 个是长度为 9 的数组。所以在我看来,它应该只调用它两次?一次是[],一次是[].length(9),到底发生了什么?
我真的需要减少它,因为它一定会影响我的表现。让我知道我是否可以做任何其他事情来显着减少这些调用
这就是我得到user.data的方式
const Home = ({ ui, user }) => { // 我把它作为道具传入这里
const mapState = ({ user }) => ({
user,
})
然后我的组件被连接了,所以我在这里传递它
【问题讨论】:
-
如何更新你的 user.data 字段
-
触发一个发出请求的 redux 操作 > api gateway > lambda > firebase 来检索它们,然后将它们加载到我的 redux 存储中
-
user.data是一个数组,Array 是一个引用类型。因此,如果您销毁旧数组并创建一个新数组,react 会将其检测为更改。 -
那么user.data来自redux store?你怎么把它从商店里拿出来,你能给我们看看选择器吗?
-
@HMR yes 现在将添加代码
标签: javascript reactjs performance use-effect