Рубрики
Без рубрики

Видение света с реагированием. Контекст – многократный реагировать. Контекст в компоненте класса

Вопрос, я быстро должен был спросить, спросил себя: «Как у вас есть несколько контекстов в компоненте React Class?» – упреждающий текст на спасение. Теги от реагирования, контекста, класса, JavaScript.

Вопрос, который я быстро должен был спросить, спросил себя: «Как у вас несколько контекстов в компоненте React Class?» – упреждающий текст на спасение

Я работал инженером программного обеспечения на +10 лет, где я в основном только делал Crud. В конце прошлого года я получил предложение присоединиться к компании, имеющей физический кусочек оборудования в качестве их продукта, с собственным приложением RECTATION в качестве клиента для этого оборудования. Это не затронуло меня долгую решать. Это отличная компания, с отличным видением и дорожной кармой.

Кодабельная база была не то, как я себе представил. Все компоненты были классовыми компонентами, написанными в «старом» реакцией, используя компоненты класса с .bind (это) . Глобальный контекст, который был одним большим беспорядком. Нет Typstrctry – или пропипс для компонентов.

Шаг 1 – Очистка

Одним из моих первых запросов на тягу добавляла Typearcript и Framework Testiving и начала рефакторов большинства компонентов презентации в функциональные компоненты. В этом процессе я также добавил некоторые тесты.

Шаг 2 – Cleanup App.js

Шаг 2 раскал огромную (~ 800 строк, включая глобальный AppContext) App.js на несколько компонентов и отделение AppContext в файл по нему. После этого все приложение начало работать намного лучше. Шаг 2 теперь сделал.

Шаг 3 – Очистка AppContext

Код уже начал выглядеть лучше. Приложение выступило лучше. Следующим шагом было немного больше чистки в AppContext. Я хотел извлечь некоторые из AppContext в отдельные контексты – у меня есть меньше строк и много файлов, чем один очень большой файл со многими строками.

Один вопрос, который я быстро должен был спросить, спросил себя: «Как у вас несколько контекстов в компоненте React Class?». Я провожу некоторое время на чтение на это и не понравился подход, который был упомянут в Реагистрационная документация – потребление нескольких контекстов Отказ Я ленивый разработчик, и это казалось, что слишком много работы и трудно поддерживать.

Раньше я работал с Redux и думал, что смогу использовать тот же подход, что и redux. Используйте компонент более высокого порядка, чтобы ввести контекст в реквизиты компонента.

Вместо того, чтобы сделать новый HOC для каждого контекста, я хотел, чтобы некоторые дженерики могли быть использованы для всех моих новых контекстов и всех компонентов.

Шаг 4 – Сотверните

Так как я должен пойти о создании этого. Я хотел ввести значения контекста в компонент – эта часть была понятной.

Позвольте мне представить упреждающую текст

import React, { useContext, ComponentType, Context, Component } from 'react'

export const withContext = >(contextName: string, context: Context, WrappedComponent: ComponentType) =>
  (p: Props) => {
    return (
      
    )
  }

Пример

class MyClassComponent extends Component {
  render() {
    return (
      This is my class component
    )
  }
}

export default withContext(
    'connection',
    ConnectionContext,
    MyClassComponent
)

Это работает очень хорошо и очень легко реализовать.

  • Первый параметр HOC – это имя опоры, которое должно иметь контекст.
  • Второе имя параметра является фактическим контекстом
  • Третий параметр – это компонент, который должен быть введен в контекст.

Вывод

Использование сcontext позволит мне захватить this.proops.Connection.isonly Чтобы проверить, подключен ли телефон к Интернету или нет. Чтобы ввести несколько контекстов в мой компонент, я могу использовать что-то вроде составить на петлю через все сcontext и применить их ко всем моим классам компонентов.

Оригинал: “https://dev.to/arelstone/seeing-the-light-with-react-context-in-classes-multiple-react-context-in-class-a-component-447d”