我正在使用Web应用程序,并且组件/路由之一存在缓存问题。有一个“母版”页面,用户可以从中查看详细信息页面。首次构造详细信息页面时,它会正确加载数据,但是当用户返回到母版并选择另一项以查看详细信息时,将为他们提供陈旧的数据。加载是从componentDidMount()
完成的,并且在第一次安装并重新安装时被调用,就很好了。
首先,执行以下操作:LOAD_CHALLENGE_DETAILS
和LOAD_CHALLENGE_DETAILS_SUCCESS
。在后续视图中,没有success
。
我在saga中加载数据,如下所示:
import { takeLatest, call, put } from 'redux-saga/effects';
import api from 'utils/api';
import { loadChallengeDetailsSuccess } from './actions';
import { LOAD_CHALLENGE_DETAILS } from './constants';
function* loadChallengeDetailsData({ id }) {
console.log('loadChallengeDetailsData');
const response = yield call(api, `/challenges/details/${id}`);
const respJson = yield call([response, 'json']);
yield put(loadChallengeDetailsSuccess(respJson));
}
/**
* Root saga manages watcher lifecycle
*/
export default function* getData() {
yield takeLatest(LOAD_CHALLENGE_DETAILS, loadChallengeDetailsData);
}
它将打印到控制台:
action: {type: "powerwalks/Challenges/LOAD_CHALLENGE_DETAILS", id: "0d6e0252-a5ce-4e46-a3cb-042e2b110214"}
saga.js:9 loadChallengeDetailsData
reducer.js:12 action: {type: "powerwalks/Challenges/LOAD_CHALLENGE_DETAILS_SUCCESS", payload: {…}, @@redux-saga/SAGA_ACTION: true}
然后我返回并选择另一个“记录”后,它只会打印:
action: {type: "powerwalks/Challenges/LOAD_CHALLENGE_DETAILS", id: "72459cb0-e0d3-49bb-81f0-7b753f2de5a2"}
我对正在发生的事情感到困惑。请告知。