В моем проекте используется next-redux-wrapper (2.0.0) и next-redux-saga (3.0.0), я предпочитаю вызывать API через redux-saga на стороне сервера, но API вызывался несколько раз. Я вызываю API, чтобы вести журнал и обрабатывать некоторые данные, многократный вызов API приведет к неправильным данным.
Вот мои коды, какое решение?
// index.js
Index.getInitialProps = async ({ ctx: { isServer, store } }) => {
if (isServer) store.dispatch(appOnServer())
}
// saga.js
import axios from 'axios'
import { take, call } from 'redux-saga/effects'
import { actionToListen, actionToActivate } from './actions'
function * callApi {
try {
const data = call(axios.get, 'https://some_api_url')
yield put(actionToActivate(data.data))
} catch (err) { console.info(err) }
}
function * rootSaga() {
try {
yield take(actionToListen())
} catch (err) { console.info(err) }
}
export default rootSaga





getInitialProps запускается только один раз за рендеринг. Иногда срабатывает HMR (горячая замена модуля) и очень быстро перезагружает страницу при загрузке. Правильный способ проверки каждого рендера - выполнить curl локальный: 3000, поскольку в этом случае нет других факторов.