Ответ 1
Конечно, просто используйте запятую, как будто вы разрушаете другое свойство родительского объекта:
const obj = { state: { mode: 'str' }};
const { state: { mode }, state } = obj;
console.log(mode);
console.log(state);
Я имею:
const { state: { mode } } = this
console.log(mode) //'mode'
console.log(state) //undefined
Я хочу, чтобы объявить state
переменной, а также.
Есть ли способ разрушить это, не разбивая его на два утверждения?
const { state } = this
const { mode } = state
Конечно, просто используйте запятую, как будто вы разрушаете другое свойство родительского объекта:
const obj = { state: { mode: 'str' }};
const { state: { mode }, state } = obj;
console.log(mode);
console.log(state);
Вы также можете разрушить state
переменной:
const { state, state: { mode } } = { state: { mode: 'mode' } };
console.log(mode) // 'mode'
console.log(state) // { mode: 'mode' }
В то время как все другие ответы здесь предложили слово вокруг, чтобы получить значения, но я добавляю этот ответ, чтобы объяснить, почему мы получаем только самое глубокое вложенное значение
let state = {
state: {
mode : 'some value'
}
}
const { state: { mode } } = state
Когда вы делаете вложенную деструкцию, вы будете удовлетворены чем-то вроде этого
var state = {
state: {
mode: 'some value'
}
};
var mode = state.state.mode; // this is how your de-structuring is interpreted
Это не создает отдельную переменную для каждого свойства,