我想知道具有“胖” gDSFP功能是否不好。目前,我有一个组件,该组件可以接收一些数据并进行大量数据操作
function getDrivedStateFromProps(nextProps, prevState) {
// start doing data manipulation
,并且在遇到错误情况时会返回新的错误状态片
const someValue = nextProps.something * myFunc()
if (someValue === badThing()) {
return {error: true};
}
// continue doing data manipulation
此操作重复多次,以完成所有数据操作并返回我的组件所需的derivedState。我对社区对“胖” gDSFP功能的看法感到好奇。我的组件仅在外部数据源已更改且需要导出新状态时才运行gDSFP,因此我看不到该逻辑还可以存在于何处。
答案 0 :(得分:0)
我认为您实际上可能处在使用getDerivedStateFromProps
根本不是最佳方法的情况下。在您的问题中,您声明...
我的组件仅在外部数据源已更改且需要派生新状态时才运行gDSFP,因此我看不到该逻辑还可以存在于何处。
给出此语句,听起来您可以使用备忘录。 Here是在react文档上讨论的这个概念。
基本思想是管理getDerivedStateFromProps
可能会麻烦很多,尤其是当您有很多逻辑要进行的时候。如果您要捕获状态中的道具的原因仅仅是为了提高性能,那么备忘录可能就是您的朋友。
这里的想法是,您不希望每次道具更改时都运行某种逻辑,因此,如果您有一个函数的参数与以前相同,例如状态为如果未更改,您的函数将返回它存储在缓存中的最后一个计算结果。 This库可以很好地处理此问题,并且非常易于使用。
人们经常会想到的另一个问题可能是促使他们达到getDerivedStateFromProps
,除非他们确实更改了道具,否则要确保其组件不会渲染,因此通过使组件基于计算状态进行渲染,可以避免这种情况。可以实现。
但是,也可以不使用getDerivedStateFromProps
而实现。使用PureComponent可以使您获得相同的结果,而不必大惊小怪。另一个选项可以是shouldComponentUpdate。
简而言之,除非您有特定的特定原因使getDerivedStateFromProps
适用于您的用例,否则最好选择一种涉及较少拉扯头发的解决方案。