如何解决React:useEffect 总是正确的方法吗?
我目前在问自己,useEffect 是否总是正确的方法。 由于我目前的项目,我正在考虑这个问题。
想象一下,您必须遵循:
-
一个状态
query
,它只是一个后端查询。查询也知道sorting
。这将由loadQuery
方法填充,该方法从后端获取配置的query
。但是初始状态是一个空的query
并且不是未定义的。 -
从
loadData
类型的后端加载数据的方法Entity[]
。此方法消耗状态query
。这可以直接触发,因为空query
是有效查询。 -
一个方法
loadView
,它从View
类型的后端加载视图。view
只是一个 JSON,它描述表格的单元格并具有sorting
属性。 -
一个 useEffect,它调用
loadData
和loadView
。作为依赖项,我们有query
。 -
一个 useEffect 函数,它监听加载的
view
。如果加载的视图具有sorting
属性,那么它将操纵query
状态。这将导致从上面的一点再次触发 useEffect。
这是当前的场景(当然缩短了)。 我们也有
-
view
切换按钮,再次变为query
。这将导致加载数据的 useEffect 将被触发。 - 在表中无限加载(它也将调用带有偏移量的
loadData
), - 如果用户在
query
中更改查询,则FilterDialog
可以更改
有时加载数据的useEffect,会连续触发3次。
当然,如果某些数据已经加载或未加载,解决方案将是记住一个布尔值......但是由于我们有不止一个 useEffect,所以很难做到这一点。也很难记住一个布尔值,因为如果发生 componentDidUpdate
循环,那么你必须重置这些布尔值,因为一切都应该像以前一样执行。但这可能会导致问题,因为一切都是异步的。
也许其他人也有同样的问题,有太多的 useEffects 这会导致不必要的事情,可以与我分享他的经验:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。