Удалить объекты состояния в реакции - PullRequest
0 голосов
/ 13 июня 2019

Я хочу сохранить несколько деталей значения состояния в пожарном депо.Как мне этого добиться?

state = {
    sp_Name: '',
    sp_Phone: '',
    sp_email: '',
    sp_Role: 'Fleet Provider',
    usr_org_LicenseNumber: '',
    sp_License:'',
    usr_org_StateConvered: '',
    usr_org_DistConvered: '',
    EquipmentCount: 0,
    loading:false,
    checked: false,
    disChecked : false,
    open: false,
    message:'',
    sp_NameError: '',
    sp_PhoneError: '',
    sp_emailError: '',
    usr_org_LicenseNumberError: '',
    sp_LicenseError:'',
    usr_org_StateConveredError: '',
    usr_org_DistConveredError: '',
    sp_NumberofEquipmentsError:'',
};

Я удаляю некоторые детали, но есть ли другой способ удалить все сразу.

const stateObj = this.state;
delete stateObj['loading'];
delete stateObj['checked'];
delete stateObj['disChecked'];
delete stateObj['open'];
delete stateObj['message'];
delete stateObj['sp_NameError','sp_PhoneError','sp_emailError'];
delete stateObj['usr_org_LicenseNumberError', 'sp_LicenseError','usr_org_StateConveredError',
'usr_org_DistConveredError','sp_NumberofEquipmentsError'];
this.props.UpdateUserDetails(uid, stateObj)
this.openSnackbar({ message: 'Submitted Successfully.!' });

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Попробуйте это.

keysToBeRemoved = ["loading", "checked", "disChecked", "open", "message"];
this.setState(prevState => ({
  ...Object.keys(prevState).filter(item => !keysToBeRemoved.includes(item)
    ).map(field => ({
      [field]: prevState[field]}
    ))
}))
0 голосов
/ 13 июня 2019

Вы можете использовать комбинацию Object.entries и array.reduce, что должно сделать это немного чище:

Вам просто нужен массив, содержащий ключи, которые вам больше не нужны:

let keysToRemove = ["loading", "checked", "disChecked", "open", "message", "sp_NameError", "sp_PhoneError", "sp_emailError", 'usr_org_LicenseNumberError', 'sp_LicenseError','usr_org_StateConveredError','usr_org_DistConveredError','sp_NumberofEquipmentsError']

и новое состояние

let newState = Object.entries({...state}).reduce((obj, [key, value]) => {
    if(!keysToRemove.includes(key)){
        obj[key] = value
    }
    return obj
}, {})

this.props.UpdateUserDetails(uid, newState)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...