Передача всех свойств состояния в функцию, кроме одного - PullRequest
0 голосов
/ 05 февраля 2019

Можно ли передать все состояния кроме одного свойства?Я имею в виду, что у меня есть компонент, который выглядит следующим образом, и я хочу передать в функцию редукции this.props.editAnimal () все состояния, кроме свойства "submit", возможно ли каким-то образом исключить одно свойство состояния и передать все остальные?

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)
    }

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Есть много способов сделать это.Вот один из них:

const tempState = {...this.state};
delete tempState.submited;
this.props.editAnimal(id, tempState);

Сначала создается копия состояния путем разрушения состояния во временную переменную tempState.Затем мы удаляем свойство, которое нам не нужно, из временной переменной с delete.

Sidenote: вы написали с ошибкой «передано», оно с двойным"т".

0 голосов
/ 05 февраля 2019

Если вы переносите свой код с помощью 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...