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