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