Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Taro 1.3.10 hook组件传递函数每次引用不一样,导致Taro.memo不生效 #4003

Closed
lbb00 opened this issue Jul 29, 2019 · 7 comments

Comments

@lbb00
Copy link

lbb00 commented Jul 29, 2019

复现步骤
MyComponent 是一个用了Taro.memo优化的组件,但是发现MyComponent还是每次都会全部重新渲染,在memo中手动对比发现,子组件收到的onClick的引用每次都不一样。

function Page() {
  const handleClick = useCallback(() => {
    console.log('foo')
  }, [])
  const arr = [...new Array(10)].map((_, index) => index)
  return (
    <View>
      {arr.map(item => {
        return <MyComponent onClick={handleClick} key={item} />
      })}
    </View>
  )
}

期望行为
[这里请用简洁清晰的语言描述你期望的行为]

报错信息

[这里请贴上你的完整报错截图或文字]

系统信息

Taro v1.2 及以上版本已添加 taro info 命令,方便大家查看系统及依赖信息,运行该命令后将结果贴下面即可。

  • 操作系统: [e.g. Windows 10]
  • Taro 版本 [e.g. v.0.0.64]
  • Node.js 版本 [e.g. v9.0.0]
  • 报错平台 [h5, weapp]

补充信息
[可选]
[根据你的调查研究,出现这个问题的原因可能在哪里?]

@taro-bot
Copy link

taro-bot bot commented Jul 29, 2019

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

@lbb00
Copy link
Author

lbb00 commented Jul 29, 2019

太影响性能辽

@lbb00 lbb00 changed the title Taro 1.3.10 Taro.memo对hook组件传递函数判断有问题 Taro 1.3.10 hook组件传递函数每次引用不一样,导致Taro.memo不生效 Jul 29, 2019
@lbb00
Copy link
Author

lbb00 commented Jul 29, 2019

产品说打算拿我祭天

@yuche
Copy link
Contributor

yuche commented Jul 29, 2019

你的 memo 函数是怎样写的,能不能做一个最小化仓库复现

@lbb00
Copy link
Author

lbb00 commented Jul 29, 2019

用了默认的Taro.memo发现没有效果。然后我就对比到底哪个props一直在变化,发现是onClick的引用一直在变。跟我memo里对比函数怎么写的没什么关联啦

@lbb00
Copy link
Author

lbb00 commented Jul 29, 2019

但是handleClick用的是useCallback,然后我又用一个变量缓存handleClick,对比两次结果,是同样的引用。所以问题出在父组件给子组件传递handleClick上。

@lbb00
Copy link
Author

lbb00 commented Jul 30, 2019

先关了,应该是Taro.memo中用的objectIs导致memo不生效

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants