Лучший способ создания объекта с каждым ключом, равным нулю?
Поэтому в моем проекте React у меня есть запасное состояние по умолчанию для формы адреса, которая выглядит следующим образом:
state = {
newLocation: this.props.location || {
lat: null,
lng: null,
street: null,
complement: null,
neighbourhood: null,
city: null,
state: null,
zipCode: null,
country: null,
},
}
Тем не менее, довольно нелепо определять такой большой объект со всеми ключами, равными нулю. Есть ли более короткий способ сделать это? Что-то в ES6/ES7?
2 ответа
Решение
Вы можете использовать массив, итерировать ключи и создать новый объект с Object.assign.
var keys = ['lat', 'lng', 'street', 'complement', 'neighbourhood', 'city', 'state', 'zipCode', 'country'],
loc = { lat: 123, lng: 246, city: 'NY', country: 'USA' },
state = {
newLocation: Object.assign(keys.reduce((o, k) => Object.assign(o, { [k]: null }), {}), loc)
};
console.log(state);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Используйте метод defaultProps
defaultProps может быть определено как свойство самого класса компонента, чтобы установить реквизиты по умолчанию для класса. Это используется для неопределенных реквизитов, но не для пустых реквизитов. Например:
class CustomButton extends React.Component {
// ...
}
CustomButton.defaultProps = {
color: 'blue'
};