Что такое redux-loop и как его использовать в React Native
Что такое redux-loop и какова основная цель его использования в приложении React Native?
1 ответ
Redux Loop - это библиотека, которая позволяет запускать побочные эффекты от редукторов в чистом и тестируемом виде путем переноса архитектуры elm на redux. Он служит той же цели, что и redux-thunk и redux-saga.
Вот пример, в котором вы можете запустить выборку и описать, как справиться с успехом и неудачей, и все это с вашего редуктора.
//reducer.js
import { loop, Cmd } from 'redux-loop';
const initialState = {
loading: false,
data: null,
error: null
}
function reducer(state = initialState, action){
if(action.type === 'pageLoaded'){
const newState = {...state, loading: true};
const cmd = Cmd.run(fetchData, {
successActionCreator: dataLoaded,
failActionCreator: dataLoadFailed,
args: [action.itemId]
});
return loop(newState, cmd);
}
else if(action.type === 'dataLoaded'){
return {
...state,
loading: false,
data: action.data,
error: null
};
}
else if(action.type === 'dataLoadFailed'){
return {
loading: false,
error: action.error
};
}
return state;
}
export default reducer;
Обратите внимание, что fetchData никогда не вызывается из вашего редуктора, поэтому это все еще чистая функция, которая просто возвращает данные и ее легко проверить.
Вы бы зациклили его в приложении, поддерживающем реакцию, по той же причине, по которой вы использовали бы его в обычном приложении для реагирования с помощью redux, а именно, что redux само по себе не предоставляет способа напрямую запускать побочные эффекты из кода redux. Вместо этого он позволяет вам решить для себя, как вы хотите это сделать, позволяя вам писать промежуточное программное обеспечение и хранить усилители для redux, которым является redux-loop.
Вы можете узнать больше на https://redux-loop.js.org/
Примечание: я поддерживаю redux-loop