react-keeper icon indicating copy to clipboard operation
react-keeper copied to clipboard

enterFilter

Open yueduz opened this issue 7 years ago • 11 comments

router好像没有等到enterFilter执行完成就开始渲染了,我放在enterFilter中的ajax总会被请求两次

yueduz avatar Jun 06 '17 04:06 yueduz

确实是会被调用两次,但是不清楚是什么原因.

yueduz avatar Jun 06 '17 14:06 yueduz

2017-06-06 23-32-56 我在enterFilter里调用了这个函数

yueduz avatar Jun 06 '17 15:06 yueduz

我使用了mobx,是不是因为在enterFilter调用时执行了一次,渲染好后检测到props变化又自动渲染了一次,但是我是在设置好props才调用的callback()啊,但是我看组件在没有完成props设置就渲染了一次了

yueduz avatar Jun 07 '17 04:06 yueduz

filter只有在目标component 的mount状态改变的时候才会执行,可以通过render方法打印下,看是否mount状态有改变。

lanistor avatar Jun 07 '17 06:06 lanistor

2017-06-07 21-48-42 确实是,render了一次,enterFilter了两次

yueduz avatar Jun 07 '17 13:06 yueduz

@yueduz 可否提供下测试代码,我们这边调试一下?

lanistor avatar Jun 07 '17 13:06 lanistor

我这里环境较复杂,不太方便. enterFilter在render前后各调用了一次

yueduz avatar Jun 07 '17 13:06 yueduz

代码直接给你的话可能无法正常运行,如果不能运行也可以那我可以把代码给你

yueduz avatar Jun 07 '17 14:06 yueduz

@yueduz 有能复现问题的代码就可以,不一定源代码。可以发我邮箱

lanistor avatar Jun 08 '17 04:06 lanistor

我想我找到问题了,为什么刷新两次.组件还没有render()的时候调用了一次enterFilter,但是enterFilter改变了组件引用的值.,所以mobx刷新了组件,组件刷新自然又要调用enterFilter.第二次调用enterFilter设置的值和第一次一样,所以没有继续刷新.在还没有callback()之前,mobx就检测到引用变化了.不知道怎么解决

yueduz avatar Jun 08 '17 14:06 yueduz

@yueduz 好的。我们这边进行下测试。

lanistor avatar Jun 09 '17 02:06 lanistor