У меня есть структура папок моего проекта: -
В GlobalStore.js у меня есть код ->
import React from 'react'
const GlobalContext=React.createContext();
const GlobalProvider=GlobalContext.Provider;
const GlobalConsumer=GlobalContext.Consumer;
export default {GlobalProvider,GlobalConsumer}
В App.js у меня есть код ниже -
import logo from './logo.svg';
import './App.css';
import Login from './Components/Login';
import { store } from "./GlobalStorage/store";
import {GlobalProvider,GlobalConsumer} from "./GlobalStore";
function App() {
return (
<div className = "App">
<GlobalProvider value = {store}>
<Login></Login>
</GlobalProvider>
</div>
);
}
export default App;
Хотя я экспортировал GlobalProvider из GlobalStore.js, приложение выдает следующую ошибку:
Failed to compile.
./src/App.js
Attempted import error: 'GlobalProvider' is not exported from './GlobalStore'.
Хотя import { }
выглядит как деструктуризация, это не то же самое, что деструктуризация объекта. Синтаксис связан с именованным экспортом. Вы перепутали экспорт по умолчанию с именованным экспортом. Если вы экспортируете что-то только с помощью export
(не export default
), вы можете импортировать это по имени с помощью import { } from ...
. Однако, если вы используете export default
, вы просто даете импорту имя (например, import Store from './GlobalStore'
) и деструктурируете его позже (const { GlobalProvider } = Store
)
Вы экспортируете объект со свойствами GlobalProvider
и GlobalConsumer
как экспорт default
из GlobalStore.js
. Удалите ключевое слово default
, и он будет работать, как и ожидалось, с обычным именованным экспортом.
export { GlobalProvider, GlobalConsumer };
я думаю
default
не требуется в globalstoreexport default {GlobalProvider,GlobalConsumer}