Я использовал redux-saga
в моем приложении. И используйте saga
, чтобы установить состояние моего redux
.
Но одна вещь, которую я испытываю сейчас, - это зависание приложения, если я использую saga, чтобы обновить redux state
с другим значением по сравнению с существующим состоянием
Допустим, в моем redux
есть название штата locale
. сначала я устанавливаю en
и создаю действие CHANGE_LOCALE
, чтобы изменить состояние locale
на zh
позже.
reducer.js
const initialState = fromJS({
locale: 'en' <- set initial state to en
});
function languageProviderReducer(state = initialState, action) {
switch (action.type) {
case CHANGE_LOCALE:
return state
.set('locale', action.locale);
default:
return state;
}
}
saga.js
export function* loadProfile() {
const profileURL = 'profile';
const profile = yield axios.get(profileURL)
// .then((res) => (res.data))
.then((data) => (data.data));
yield put({
type: ACTION1,
payload: profile,
});
console.log('finish action one');
yield put({
type: CHANGE_LOCALE,
locale: 'zh', <- change to zh using saga
});
console.log('finish action two');
yield put({
type: ACTION3,
payload: profile,
});
console.log('finish action three');
}
export default function* defaultSaga() {
yield takeLatest(constants.LOAD_PROFILE, loadProfile);
}
Поэтому, когда я запускаю приложение, console.log
просто показывает finish action one
. Это означает, что он зависает после изменения locale
состояния Redux
.
(я использую Redux Dev Tool для проверки, и он фактически изменил состояние locale
на 'zh'
, -> фактически он завершает action two
, однако, похоже, что saga
не знает, что делать дальше )
p / s: программа будет успешно работать после зависания в течение 2 или 3 минут, так что она, как сага, застревает, а затем повторяется через несколько минут и завершается успешно
Любая помощь, пожалуйста ??