Когда нескольким вашим страницам необходимо использовать одни и те же данные, вы можете использовать Context для сохранения результата. Это хороший способ создать централизованное хранилище без использования сложных и более самодостаточных библиотек, таких как redux
. Вы можете реализовать контекст внутри файла _app. js, который должен находиться внутри вашей папки root. Следующий путь. js рассматривает его как оболочку root, и вам просто нужно будет использовать 1 экземпляр Context
context / appContext
import React from 'react';
const AppContext = React.createContext();
export const AppProvider = AppContext.Provider;
export const AppConsumer = AppContext.Consumer;
export default AppContext;
_app. js
import React from 'react'
import App from 'next/app'
import AppProvider from '../contexts/appContext';
class MyApp extends App {
state={
data:[]
}
render() {
const { Component, pageProps } = this.props;
// You can implement logic in this component to fetch data and update state
return (
<div>
<AppProvider value={this.state.data}> // pass on value to context
<Component {...pageProps} />
</AppProvider>
</div>
)
}
}
export default MyApp
Теперь каждый компонент может использовать значение контекста, используя AppConsumer или используя useContext
, если вы используете хуки
Подробнее о том, как использовать Context, можно прочитать здесь