Неизменяемость компонента и RequiredArray

RedDeveloper
18.04.2023 11:47
Неизменяемость компонента и RequiredArray

При изучении проектирования компонентов один из рекомендуемых советов - никогда не изменять входные свойства.

Давайте рассмотрим пример ниже. (Я использую Angular, но то же самое может быть применимо и к другим фреймворкам).

@Component({…})
class MyComponent {

  @Input() status: Status[];

   get sortedStatus() {
     return this.status.sort();
   }
}

Здесь sort является изменяемой операцией. Она не только сортирует массив, но и изменяет его.

Я подготовил [stackblitz](https://angular-njd2pq.stackblitz.io/ ). Здесь у нас есть массив status типа string. Он передается в дочерний компонент. Он отображается как в родительском, так и в дочернем компоненте. В дочернем компоненте у меня есть кнопка Sort Array, которая в основном сортирует `статус`, полученный через ` @Input()`.

Сортировка массива из дочернего компонента сортирует массив и он отражается в родительском компоненте.

Мы можем предотвратить такое поведение, используя **ReadonlyArray**.

Плюсы использования ReadonlyArray
Плюсы использования ReadonlyArray

Этот интерфейс убирает все изменяемые операции, такие как _push, pop, shift, unshift_, а также _sort_.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.