Частичная деструктуризация объекта в аргументах функции в JavaScript - PullRequest
2 голосов
/ 23 октября 2019

Есть ли способ деструктурировать только некоторые свойства объекта в аргументах функции, в то время как остальные останутся доступными в объекте?

Рассмотрим следующий пример реакции. (Я использую React в качестве примера, но этот вопрос применим для JS в целом)

const Form = (formProps) => {
  return (
    ...
    <FormSectionComponent
       initialValues={...} 
       values={...}
       {...formProps}
    />
    ...
  )
}

const FormSectionComponent = ({ initialValues, values}) => {
...
}

Входящие props деструктурированы в аргументах функции, однако, есть и другие подпорки, в которых я мог быя хочу получить доступ к некоторым условиям, которые я не хочу или не могу деструктурировать - например, я не знаю, какие они есть, и хотел бы их записать.

Есть ли способ не деструктурировать другие реквизиты всекция аргументов и доступ к ним как к props объекту?

Единственный обходной путь, о котором я могу подумать, таков:

const FormSectionComponent = (props) => {
  const { initialValues, values} = props;
}

Но мне интересно, есть ли какое-либо другое решение.

1 Ответ

3 голосов
/ 23 октября 2019

Вы можете сделать что-то вроде

const FormSectionComponent = ({ initialValues, values, ...props}) => {
...
}

, которое по существу связывает props с остальными свойствами аргумента, передаваемого функции.

const f = ({a, b, ...rest}) => rest
console.log(f({a: 1, b: 2, c: 3, d: 4})) // { c: 3, d: 4}
...