Вот что я делаю -
В настоящее время у меня есть пустой массив в authProcessCurrentData в редукторе.Первоначально я устанавливаю массив в нем, как ..
[{label:'sign in', id:uuid, type:button}...] //buttonArray
[{label:'Pleae login in', id:uuid, type:text}...] //buttonArray
, который я вставляю по таймауту (один за другим).Как только у меня будет полный отформатированный массив, я отправляю его в тип редуктора AUTH_SCREEN_CURRENT_DATA.который работает нормально, но в следующем случае вставляется тот же массив с разными метками (сначала текстовые данные, а затем кнопки, как и раньше).Я получаю новые данные из магазина, но с предупреждением A state mutation was detected between dispatches
.Я пробовал с разными методами вставки массива с другим ключом редуктора, но не повезло.Любая помощь?
export const injectProps = index =>{
const { dispatch, getState } = storeObj.store;
let currentBotData = getState().onBoarding.authProcessData;
let {textData, identifier} = currentBotData[index];
let buttons = currentBotData[index].buttonsData
let i = 0;
dispatch({ type: "AUTH_SCREEN_RESPONSE_REQUEST" });
let array = [];
Array.prototype.insert = function(ind, item) {
this.splice(ind, 0, item);
};
let interval = setInterval(async() => {
let currentDataObjs = getState().onBoarding.authProcessCurrentData?getState().onBoarding.authProcessCurrentData:[];
let newTextArray = [...currentDataObjs]
newTextArray.insert(0,textData[i]);
if (i <= textData.length-1) {
dispatch({ type: "AUTH_SCREEN_CURRENT_DATA", currentData: newTextArray, currentScreen:index});
i += 1;
}
if (i === textData.length){
clearInterval(interval);
setTimeout(() => {
dispatch({ type: "ONBOARDING_LOADER_STOP" });
}, 1000);
let nextArray = [...buttons,...newTextArray];
console.log("nextArray nextArray ",nextArray)
return new Promise(_=>_(dispatch({
type: "AUTH_SCREEN_CURRENT_DATA",
currentData: nextArray,
currentScreen:index
})
));
}
if (i > textData.length){
clearInterval(interval);
return setTimeout(() => {
return new Promise(_=>_( dispatch({
type: "ONBOARDING_LOADER_STOP"
})))
}, 1000);
}
}, 1000);}