🚀 Вам бесплатно доступен тренажёр по HTML и CSS.

Если вы работали с ванильным JavaScript или React, то могли видеть в коде три точки — .... Так обозначаются операторы spread и rest. Они используют одинаковый синтаксис, но решают разные задачи.

Что такое оператор spread

Оператор spread — это конструкция в JavaScript, которая позволяет передавать элементы массива или свойства объекта в виде отдельных аргументов.

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

function MyComponent(props) {
  return (
    <div>
      <h1>{props.title}</h1>
      <p>{props.description}</p>
    </div>
  );
}

С помощью оператора spread мы можем передать пропсы из объекта myProps в компонент MyComponent:

const myProps = { title: "Заголовок", description: "Описание" };

function App() {
  return <MyComponent {...myProps} />;
}

☝ Научитесь работать с React на нашем курсе «Вёрстка React-компонентов».

Что такое оператор rest

Оператор rest — это синтаксическая конструкция в JavaScript, которая позволяет собирать оставшиеся элементы массива в другой массив или собирать оставшиеся свойства объекта в другой объект. Он всегда идёт последним и может использоваться только раз при одной операции «распаковки» массива или объекта.

В React оператор rest используется для работы с пропсами в компонентах. Например, с его помощью можно извлекать только нужные свойства из объекта пропсов и сохранять оставшиеся свойства в отдельный объект. Затем с помощью оператора spread мы можем передать оставшиеся пропсы в дочерние компоненты.

function MyComponent({ title, description, ...childProps }) {
  return (
    <div>
      <h1>{title}</h1>
      <p>{description}</p>
      <ChildComponent {...childProps} />
    </div>
  );
}

На первой строке мы используем оператор rest — { title, description, ...childProps }. Он помогает сохранить все пропсы, кроме title и description, в отдельный объект. А на шестой строке мы передаём их в ChildComponent с помощью spread.

Как отличить spread от rest

Операторы легко отличить. Когда синтаксис ... используется для «распаковки» элементов массива или объекта в отдельные аргументы — это spread. А если три точки используются для сбора оставшихся аргументов в массив или объект — это оператор rest.

Материалы по теме

🐈