在我的React组件中,我有以下方法来保持状态和道具同步:
static getDerivedStateFromProps(nextProps, prevState) {
return nextProps.filterName === prevState.filterName ? '' : { filterName: nextProps.filterName };
}
这是有效且有效的,但我想在同一方法中添加第二行来更新另一个状态属性:
return nextProps.saveChecked === prevState.saveChecked ? false : { saveChecked: nextProps.saveChecked };
如果我用saveChecked替换filterName的现有return语句,它就可以了。添加两个“return”语句时,我收到一个错误,它是无效的。有没有一种有效的方法来重写它,以便可以更新两个状态属性?
答案 0 :(得分:0)
您可以在单独的对象中创建一个newState,然后立即返回它;
static getDerivedStateFromProps(nextProps, prevState) {
const newState = {};
if(nextProps.filterName !== prevState.filterName) {
newState = {...newState, filterName: nextProps.filterName };
}
if(nextProps.saveChecked !== prevState.saveChecked) {
newState = {...newState, saveChecked: nextProps.saveChecked }
}
//check if the object is not empty
if(!(Object.keys(obj).length === 0 && obj.constructor === Object)) {
return newState;
}
return null
}