Стоит ли использовать Redux в Next.js-приложении?
Статья (англ.): https://javascript.plainenglish.io/should-you-use-redux-in-next-js-5e57201c34da
Автор статьи считает, что нам нужно отказаться от Redux в Next.
Причина #1: В нем нет особого смысла, так как благодаря серверному рендерингу мы сразу же, еще до рендеринга страницы, получаем нужные данные.
Причина #2: У Redux есть ряд альтернатив - более легких, нативных и удобных. Например, React Context или Local Storage. В большинстве случаев их функциональности более чем достаточно. Для более сложных сценариев, например, для загрузки данных на клиенте есть библиотеки вроде swr или react-query.
Причина #3: Redux внутри Next сложно хорошо настроить и оптимизировать.
#nextjs #ссылки #redux
Статья (англ.): https://javascript.plainenglish.io/should-you-use-redux-in-next-js-5e57201c34da
Автор статьи считает, что нам нужно отказаться от Redux в Next.
Причина #1: В нем нет особого смысла, так как благодаря серверному рендерингу мы сразу же, еще до рендеринга страницы, получаем нужные данные.
Причина #2: У Redux есть ряд альтернатив - более легких, нативных и удобных. Например, React Context или Local Storage. В большинстве случаев их функциональности более чем достаточно. Для более сложных сценариев, например, для загрузки данных на клиенте есть библиотеки вроде swr или react-query.
Причина #3: Redux внутри Next сложно хорошо настроить и оптимизировать.
#nextjs #ссылки #redux
Medium
Should You Use Redux in Next.js?
Do you even need it?
👍2
Next.js Middleware: Как оно работает и 5 примеров использования
Статья (англ.): https://javascript.plainenglish.io/next-js-middleware-how-it-works-and-5-real-use-cases-cfacbeb810c9
Про миддлвары в Next мы уже начинали говорить вот тут: https://yangx.top/react_junior/504
В качестве миддлвара выступает одна простая функция
В качестве параметра она получает запрос пользователя (
В статье разбирается базовый функционал миддлвара, а также несколько кейсов его использования:
- аутентификация: получаем данные авторизации из заголовка запроса (
- страница "Сайт находится в разработке": если в урле есть секретный параметр, то показываем реальную страницу, если нет - переадресуем всех на страницу "В разработке".
- персонализация: делим пользователей на группы, по запросу определяем, к какой группе принадлежит этот конкретный пользователь (например, по кукам), и отправляем его на соответствующую страницу.
- блокировка ботов: по заголовку
#nextjs #ссылки
Статья (англ.): https://javascript.plainenglish.io/next-js-middleware-how-it-works-and-5-real-use-cases-cfacbeb810c9
Про миддлвары в Next мы уже начинали говорить вот тут: https://yangx.top/react_junior/504
В качестве миддлвара выступает одна простая функция
middleware
, которая должна экспортироваться из файла middleware.js
в корне проекта.В качестве параметра она получает запрос пользователя (
request
) и может редиректнуть его, если необходимо.import { NextResponse } from 'next/server';Из того же файла можно экспортировать переменную
export function middleware(request) {
// redirect
return NextResponse.redirect(new URL('new_url', request.url));
// rewrite (сохранить урл, но показать другую страницу)
const url = request.nextUrl.clone();
url.pathname = 'new_url';
return NextResponse.rewrite(url);
// ничего не изменять
return NextResponse.next();
}
config
, в которой, например, можно определить для каких урлов применяется миддлвар (config.matcher
).export const config = {
matcher: '/dashboard/:path*'
}
В статье разбирается базовый функционал миддлвара, а также несколько кейсов его использования:
- аутентификация: получаем данные авторизации из заголовка запроса (
request.headers.get('authorization')
), если они не совпадают с нужными, переадресуем на страницу авторизации.- страница "Сайт находится в разработке": если в урле есть секретный параметр, то показываем реальную страницу, если нет - переадресуем всех на страницу "В разработке".
- персонализация: делим пользователей на группы, по запросу определяем, к какой группе принадлежит этот конкретный пользователь (например, по кукам), и отправляем его на соответствующую страницу.
- блокировка ботов: по заголовку
request.headers['user-agent']
определяем, является ли пользователь ботом.#nextjs #ссылки
Medium
Next.js Middleware: How it Works and 5 Real Use Cases
Next.js Middleware — how it works and 5 examples of real use cases.
👍3
Как настроить Redux в NextJS
Совсем недавно мы видели мнение, что Redux в Next.js использовать не стоит: https://yangx.top/c/1218235935/551
Но если вам все-таки хочется, то вот руководство по настройке (англ.): https://medium.com/how-to-react/how-to-setup-redux-in-nextjs-5bce0d82b8de
Выглядит не особо сложно. Помимо обычных настроек Redux нам понадобится еще функция
Теперь нужно обернуть приложение в провайдер хранилища. Сделать это лучше всего в файле _app.js. В провайдер передаем
А чтобы все работало, нужно использовать компонент высшего порядка
Вот и все, теперь можно пользоваться плюшками Redux.
#nextjs #redux #статьи
Совсем недавно мы видели мнение, что Redux в Next.js использовать не стоит: https://yangx.top/c/1218235935/551
Но если вам все-таки хочется, то вот руководство по настройке (англ.): https://medium.com/how-to-react/how-to-setup-redux-in-nextjs-5bce0d82b8de
Выглядит не особо сложно. Помимо обычных настроек Redux нам понадобится еще функция
createWrapper
из пакета next-redux-wrapper.const initialState = {};
const middleware = [thunk];
const store = createStore(
rootReducer,
initialState,
composeWithDevTools(applyMiddleware(...middleware))
);
const wrapper = createWrapper(function() {
return store;
});
Теперь нужно обернуть приложение в провайдер хранилища. Сделать это лучше всего в файле _app.js. В провайдер передаем
store
.А чтобы все работало, нужно использовать компонент высшего порядка
wrapper.withRedux
.import { Provider } from "react-redux";
function MyApp({ Component, pageProps }) {
return (
Provider store={store}
Component {...pageProps}
)
}
export default wrapper.withRedux(MyApp);
Вот и все, теперь можно пользоваться плюшками Redux.
#nextjs #redux #статьи
👍3