Можно ли использовать React.context для совместного использования общего объекта?

Так что я читал об использовании реагирующего контекста, чтобы избежать бурения реквизита. Базовый пример - это компонент, который предоставляет значение, которое хранится в состоянии Компонент:

<ThemeContext.Provider value={this.state.shared, updateMyState}>

и Потребитель, который использует это значение.

Могу ли я вместо этого поделиться значением экспортированного списка или компонент, который предоставляет провайдеру, всегда ссылается на его состояние или статическое значение?

Вот что я имею в виду:

файл./list:

export const list = [];
export const updateList = (val) => list.push(val);

файл./provider:

import Provider from './provider'
import {list, updateList} from ./list

{Provider, Consumer} = React.createContext();
export ProviderComponent = () => 
   <Provider value={list, updateList}>
      <children>
   </Provider>
}

1 ответ

Да, ты можешь. Если вы обеспокоены тем, что импорт модуля несколько раз создает несколько экземпляров объекта списка, когда вы делаете импорт, как import { a, b } from './file, ./file на него ссылаются только один раз ( посмотрите этот ответ на стеке)

Я думаю, что ваш синтаксис немного не так, это должно быть

<Provider value={{ list, updateList }}>
Другие вопросы по тегам