我在App组件上有一个函数来处理子组件上父级的状态更改,我调用该函数来更新每个页面的更改。
App组件上的makeHandleChange
函数:
makeHandleChange = (pageName, change) => {
this.setState({
ticket: { ...this.state.ticket, [pageName]: change },
});
};
票务状态:
state = {
ticket: {
departments: {},
categories: {},
subCategories: {},
},
};
在每个页面上,我调用makeHandleChange
函数来设置页面的更改,例如:
makeHandleChange('categories', pageChanges)
在我应用的最后一页上,我想清除整个ticket
状态,可以通过调用makeHandleChange
函数来做到这一点吗?
答案 0 :(得分:2)
ItemsSource
该解决方案包括多次调用函数Yes, you can.
-并且由于makeHandleChange()
函数是setState()
,因此最好使用可选的函数参数来防止副作用:
async
这样,您将根据当前状态更新状态。
调用该函数3次。
makeHandleChange = (pageName, change) => {
this.setState(state => ({
ticket: { ...state.ticket, [pageName]: change },
}));
};
makeHandleChange('departments', {});
makeHandleChange('categories', {});
makeHandleChange('subCategories', {});
根据const pagesList = [
'departments',
'categories',
'subCategories',
// etc..
];
for (let i = 0; i < pagesList.length; i++)
makeHandleChange(pagesList[i], {});
的建议,创建一个附加函数来处理这种特殊情况-并防止不必要的行为:
Mayank Shukla