React引入了新的静态方法 getderivedstatefromprops(props, state) ,它在每个渲染方法之前调用,但为什么呢?在道具改变之后调用它对我来说是有意义的但是在 setState 之后它没有,也许我错过了一些东西 .

我根据公司的要求创建了一个 datePicker 组件,组件日期由prop控制 . 我在组件中有以下状态 .

selectedDate: number;
selectedMonth: number;
selectedYear: number;
currentMonth: number;
currentYear: number;
view: string;

selected表示从日期道具派生的选定日期, currentMonthcurrentYear 表示当前日历视图中的月份和年份 .

如果来自道具的 date 更改 selected* ,则应相应更改 currentMonthcurrentYear . 为此,我使用 getderivedstatefromprops ,但是让用户点击月份名称将日历视图切换到月份(而不是显示月份的日期名称),该函数使用setState为此更新 currentMonth ,但是道具的日期是与之前(包含上个月)相同,但应调用 getderivedstatefromprops ,并且currentMonth再次与之前相同而不是更改 .

我在 state 中创建了一个额外的变量来跟踪 getderivedstatefromprops 是否由于 setState 而被调用但是我没有正确的方式 .

无论是我做错了什么或丢失了什么或 getderivedstatefromprops 不应该在 setState 之后调用 . 可能我做错了什么 .