деструктурирование значений по умолчанию в параметрах функции - PullRequest
3 голосов
/ 10 января 2020

Я пытаюсь деструктурировать значения напрямую в параметрах params и влиять на значения по умолчанию с помощью общего объекта (для каждого деструктурированного subProperties):

Пример

const initialTest = {
  name: 'myName',
  surname: 'mySurname',
  age: 100,
};

const MyComponent = ({
   test: { name, surname, age } = initialTest,
}) => { ... }

<MyComponent test={{ name: 'myNameFromProps' }} />

Мое последнее желание: имеют 3 const name, surname и age, со значениями от props (параметры функции), если они определены, и значениями от initialTest, если нет.

С этим кодом , если test не определен в реквизитах компонента, он будет использовать initialTest, но если тест определен только с name реквизитами, как в примере выше, я получу:

name = 'myNameFromProps'
surname undefined
age undefined

и я хочу:

name = 'myNameFromProps'
surname = 'mySurname'
age = 100

Для сюр я могу сделать это с:

const MyComponent = ({
   test: { name = initialTest.name, surname = initialTest.surname, age = initialTest.age },
}) => { ... }

Но это совершенно не смешно ...

Я пробовал с круглыми скобками test: ({ name, surname, age } = initialTest),, но не работает, а эслинт говорит, что я тупой дэв ... и он прав xD

Если у вас есть предложения / идеи / решения, я был бы рад их прочитать. Спасибо всем!

1 Ответ

2 голосов
/ 10 января 2020

Если вы на самом деле не используете initialTest в другом месте, вы можете удалить его и перечислить значения по умолчанию внутри деструктуризации test:

const MyComponent = ({
   test: { name: 'myName', surname: 'mySurname', age: 100 } = {},
}) => { ... }

Убедитесь, что = {} на заканчивайте, если ничего не существует в свойстве test.

...