首页 > 解决方案 > 将所有状态属性传递给函数,除了一个

问题描述

是否可以通过除一个属性之外的所有状态?我的意思是我有一个看起来像这样的组件,我希望将除“提交”属性之外的所有状态传递给 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)
    }

标签: javascriptreactjsecmascript-6

解决方案


如果你使用 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)

推荐阅读