React 引入了新的静态方法getDerivedStateFromProps(props, state)
,它在每个渲染方法之前调用,但为什么呢?在props更改后调用它对我来说很有意义,但在setState
它没有之后,也许我错过了一些东西。
我datePicker
根据我公司的要求创建了一个组件,组件日期由props控制。我在组件中有以下状态。
selectedDate: number;
selectedMonth: number;
selectedYear: number;
currentMonth: number;
currentYear: number;
view: string;
selected 表示选定的日期,该日期源自 date 属性,currentMonth
并currentYear
表示当前日历视图中的月份和年份。
如果date
from prop 发生变化selected*
,currentMonth
也currentYear
应该相应地改变。为此,我正在使用getDerivedStateFromProps
但假设用户单击月份名称将日历视图切换为月份(而不是显示月份的日期名称),该函数currentMonth
使用 setState更新此日期,但日期props与之前(包含上个月)应该,但是getDerivedStateFromProps
被调用并且 currentMonth 再次与之前相同而不是改变。
是的,我创建了一个额外的变量state
来跟踪是否getDerivedStateFromProps
被调用,setState
但我认为这不是正确的方法。
要么我做错了什么,要么遗漏了什么,或者getDerivedStateFromProps
不应该在setState
. 可能我做错了什么。