#redux #next.js
Вопрос:
Я пытаюсь создать сайт для ведения блога с помощью Nextjs, я хочу извлекать данные из API, сохранять их в глобальном хранилище и вызывать необходимые компоненты. Я хочу знать правильный правильный способ его реализации?
Это мой магазин,
import { createStore, applyMiddleware } from "redux";
import { composeWithDevTools } from "redux-devtools-extension";
import { DevReducer } from "./reducers/devReduce";
import { createWrapper } from "next-redux-wrapper"
const makeStore = () => createStore(DevReducer, composeWithDevTools(applyMiddleware()));
export const wrapper = createWrapper(makeStore)
После того, как я позвоню wrapper
в _app.ts
файл,
import App from "next/app";
import Head from "next/head";
import { useDispatch, useSelector } from "react-redux";
import { ThemeProvider } from "styled-components";
import { light, dark } from "../styles/theme";
import { wrapper } from "../redux/store";
import "../styles/globals.css";
import { fetchAPI } from "../lib/api";
import { getGlobal } from "../redux/actions/actions";
import { getStrapiMedia } from "../lib/media";
import React from "react";
function MyApp({ Component, pageProps }) {
const dispatch = useDispatch();
const { global } = pageProps;
dispatch(getGlobal(global));
const theme = useSelector((state: any) => state.theme);
return (
<>
<Head>
<link rel="shortcut icon" href={getStrapiMedia(global.favicon)} />
<title>{global.siteName}</title>
</Head>
<ThemeProvider theme={theme ? dark : light}>
<Component {...pageProps} />
</ThemeProvider>
</>
);
}
MyApp.getInitialProps = async (ctx: any) => {
const appProps = await App.getInitialProps(ctx);
const global = await fetchAPI("/global");
return { ...appProps, pageProps: { global } };
};
export default wrapper.withRedux(MyApp);
Я могу сохранить данные , полученные в initialprops
, и использовать их в различных компонентах? Но я хочу знать, правильно ли это называть dispatch
или useselector
в каком-либо компоненте?