Javascript 防止功能组件使用默认值覆盖数据

Javascript 防止功能组件使用默认值覆盖数据,javascript,reactjs,Javascript,Reactjs,我有一个功能组件,它是其他功能组件的包装。 我从上下文接收到一个对象,其中包含一些数据,在我对其进行日期格式化后,我希望将这些数据作为道具传递给它。 像这样: <MyComponent schema={mtaSchema} monthInitVal={object.month} yearInitVal={object.year} /> 预期的功能是:我转到页面-即包含上述组件的页面-它碰巧也是一个表单。我对''的初始值很满意,所以该位是正确的 我希望这些默认值在相关的用户交互(这是

我有一个功能组件,它是其他功能组件的包装。 我从上下文接收到一个对象,其中包含一些数据,在我对其进行日期格式化后,我希望将这些数据作为道具传递给它。 像这样:

<MyComponent
schema={mtaSchema}
monthInitVal={object.month}
yearInitVal={object.year}
/>
预期的功能是:我转到页面-即包含上述组件的页面-它碰巧也是一个表单。我对
''
的初始值很满意,所以该位是正确的

我希望这些默认值在相关的用户交互(这是一个用户事件,发生在后面一点)之后被更新,而用户交互就是这样做的

问题是,由于整个组件是一个功能组件,它会多次重新渲染,然后将my
monthInitVal
yearInitVal
重置为其原始状态
,因为我们从未进入第二次更新所需的
useEffect
。。。因此,我的公司剩下一套选项:-(


有什么想法吗?

我建议使用.Your
let object={month:'',year:''};
应该保存在一个状态钩子中,这样可以使它在重新渲染中生存

 const [month, setMonth] = useState(0);
 const [year, setYear] = useState(0);

function getDateInitialValues(dateOfPurchase) {
....

 const [month, setMonth] = useState(0);
 const [year, setYear] = useState(0);

function getDateInitialValues(dateOfPurchase) {
....