Совместное использование класса JavaScript для нескольких компонентов React

#javascript #reactjs #redux

#javascript #reactjs #сокращение

Вопрос:

У меня есть класс Javascript, который действует как контроллер данных для взаимодействия с API.

Мне нужно вызывать методы этого класса из нескольких компонентов react.

В настоящее время я сохраняю экземпляр класса в хранилище redux, однако я понимаю, что это плохой подход к дизайну.

Как я могу использовать один экземпляр для нескольких компонентов?

Ответ №1:

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

Допустим, мне нужно использовать один и тот же экземпляр класса, Foo , во всем моем приложении. Я бы импортировал Foo в файл поставщика, который создает и экспортирует его экземпляр. Затем я бы импортировал экземпляр от того поставщика, где он мне нужен:

Файл, Foo.js :

 class Foo {};

export default Foo;
  

Файл, FooProvider.js

 import Foo from './Foo';

export let foo = new Foo();
  

Файл компонента:

 import foo from './FooProvider';
import React, { Component } from 'react';

Class MyComponent extends Component {
    someMethod () {
        //use foo
    }
}

export default MyComponent;
  

Комментарии:

1. Звучит хорошо для меня. Или, может быть, экспортировать объект из самого файла класса. Например, класс Foo {}; экспортировать let foo = new Foo();