2017-01-22 7 views
2

Возможно ли разрушить объект, одновременно возвращая его. Например, чтобы изменить этот код:ES6 деструктурирование в операторе возврата

const mapStateToProps = ({ newItem }) =>{ 
    const { id, name, price } = newItem; 
    return { id, name, price }; 
} 

Чтобы что-то вроде этого:

const mapStateToProps = ({ newItem }) =>{ 
    return { id, name, price } = newItem; 
} 
+4

Пытались ли вы это? Похоже, это заняло бы меньше времени, чем печатать здесь вопрос. – Pointy

+0

Спасибо за полезный ответ Pointy, да, конечно, я пробовал, но с таким синтаксическим сахаром в ES6, я думал, что может быть правильный способ сделать это – kfcobrien

+0

Ваш код работает уже, не уверен, что «правильный способ сделать это "вы хотите. – Oriol

ответ

4

Нет, это не возможно.

(Отказ от ответственности: синтаксис работает и делает как деструктурирующий и возвращение, но это эквивалентно

({ id, name, price } = newItem); // assigns global variables 
return newItem; 

, который, вероятно, не то, что вы хотели)

Чтобы сделать то, что вы хотите (который, как я полагаю, создает новый объект), вам нужно использовать литерал объекта (потенциально с обозначением коротких свойств). Смотрите также One-liner to take some properties from object in ES 6:

const mapStateToProps = ({newItem: {id, name, price}}) => ({id, name, price}); 
+0

спасибо, это именно то, что я искал !! Извините, я не был более ясен в своем описании :) – kfcobrien

0

В ES6 вы также можете сделать следующее, если вы хотите, чтобы передать все newItem ключи

const mapStateToProps = ({ newItem }) => ({ ...newItem }); 
Смежные вопросы