我已经正确设置了我的商店,在ios上一切都很好。但在代码完全相同的android上,调度操作没有效果,它不会用从我的APi返回的值填充我的上下文。
由于它是完全相同的代码,我一直在努力弄清楚问题可能是什么
我正在使用
"react-redux": "^7.2.1",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
"react-native": "0.66.4",
调用应用程序启动的操作
const dispatch = useDispatch()
const trans = useSelector(state => state.translation);
useEffect(() => {
fetchTranslations(dispatch)
}, [])
减速器
import React from "react";
const initState = {};
const TranslationReducer = (state = initState, action) => {
switch (action.type) {
case 'FETCH_TRANSLATIONS':
return action.payload.data
default:
return state;
}
};
export default TranslationReducer
动作
import { get } from '../api/query';
export function fetchTranslations(dispatch) {
try {
return (
get('/api/v3/labels/mobile_app/')
.then(res => {
console.log('res', res)
return res.json()
})
.then(response => {
console.log('response', response)
dispatch({
type: 'FETCH_TRANSLATIONS',
payload: response
})
})
)
} catch (e) {
console.log('error', e)
}
}
api正确地返回了所有内容,但调度操作对状态没有任何作用,在android上保持为空,但在ios上运行良好。
好的,经过几天的搜索,我重新开始设置redux devtoools,并更改了我的商店初始化中的一行。
之前
const store = createStore(
reducers,
{},
composeWithDevTools(applyMiddleware(ReduxThunk))
);
解决方案
const store = createStore(
reducers,
{},
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
这一行似乎只在安卓系统上导致了错误composeWithDevTools(applyMiddleware(ReduxThunk))
我还不明白为什么,但对于每个经历类似错误的人来说,我希望这会有用。