javascript - 将所有状态属性传递给函数,除了一个
问题描述
是否可以通过除一个属性之外的所有状态?我的意思是我有一个看起来像这样的组件,我希望将除“提交”属性之外的所有状态传递给 redux 函数 this.props.editAnimal(),是否可以以某种方式排除一个状态属性并传递所有其他状态?
export class EditAnimal extends Component {
constructor(props) {
super(props)
this.state = {
animalName: '',
animalNumber: '',
animalChip: '',
animalAge: '',
extraInfo: '',
submited: false
}
}
handleSubmit = (e) => {
const id = this.props.id
e.preventDefault();
console.log(this.state);
this.props.editAnimal(id, this.state)
}
解决方案
如果你使用 babel 编译你的代码,你可以解构状态并复制你只关心的变量:
const { submited, ...editAnimalParams } = this.state;
this.props.editAnimal(id, editAnimalParams)
你可以在这里看到 babel 转换成什么,但基本上会跳过你不想复制的任何键。
如果您不使用 babel(可能不太可能),那么您可以做一些更冗长但不需要 babel 的操作:
const editAnimalParams = Object.assign({}, this.state);
delete editAnimalParams.submited;
this.props.editAnimal(id, editAnimalParams)
推荐阅读
- azure - 如何为失败的备份创建应用服务备份警报?
- javascript - 如果这个函数只有切换到活动类的功能,它是如何在类之间切换的?
- javascript - 使用命名的正则表达式组输出匹配数组
- sql - 我将如何在我的配置单元查询中使用 for 循环
- python - 将长代码块转换为函数(在 Python 中)
- wcf - 无法在 VS 2019 中使用 WcfTestClient 调试项目
- google-cloud-firestore - 如何使用导出的 Firestore 数据?
- r - 当它包含 r 中的空单元格时删除行
- python - Google AI Platform:加载模型时出现意外错误:'str' object has no attribute 'decode' [Keras 2.3.1, TF 1.15]
- powerbi - DAX 和 DISTINCT COUNTROWS