Javascript-React-返回多个值
在我的React组件中,我有以下方法来保持状态和道具的同步:Javascript-React-返回多个值,javascript,reactjs,Javascript,Reactjs,在我的React组件中,我有以下方法来保持状态和道具的同步: static getDerivedStateFromProps(nextProps, prevState) { return nextProps.filterName === prevState.filterName ? '' : { filterName: nextProps.filterName }; } 这是有效且有效的,但我还想在同一方法中添加第二行以更新另一个状态属性: return
static getDerivedStateFromProps(nextProps, prevState) {
return nextProps.filterName === prevState.filterName ? '' : { filterName: nextProps.filterName };
}
这是有效且有效的,但我还想在同一方法中添加第二行以更新另一个状态属性:
return nextProps.saveChecked === prevState.saveChecked ? false : { saveChecked: nextProps.saveChecked };
如果我将filterName的现有return语句替换为saveChecked的这个语句,它就可以工作了。我在添加两个“return”语句时出错,表示它无效。有没有一种有效的方法可以重写它,以便更新这两个状态属性?您可以在一个单独的对象中创建一个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
}
属性排列符号在我的项目中不起作用,我是否需要用某种东西替换Object和obj?它们没有定义。谢谢尝试将…newState替换为Object.assign(newState)您可以在项目中设置排列语法,请选中。否则你可以写,
Object.assign({},newState,{saveChecked:nextProps.saveChecked})
你能分享一下你期望的输出吗?