导航后React Native Redux useSelector未定义



导航到另一个状态后,我无法获得更新的状态。我想使用我的dataState,它在reducer中初始化并通过操作更新。我在屏幕1上调度后使用了这种状态,但当我导航到另一个屏幕时,它返回未定义。

store.js

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import reducers from './reducers.js';

export default createStore(reducers, applyMiddleware(thunk));

action.js

export const DATA_AVAILABLE = 'DATA_AVAILABLE';
export const addData = (data) => ({
type: DATA_AVAILABLE,
data
});

reducers.js

import { combineReducers } from 'redux';
import { DATA_AVAILABLE } from "./actions" 
let dataState = { data: [] };
const dataReducer = (state = dataState, action) => {
switch (action.type) {
case DATA_AVAILABLE:
return {...state, data: action.data};
default:
return state;
}
};

const rootReducer = combineReducers({
dataReducer
})
export default rootReducer;

HomeScreen.js使用

const dataReducer = useSelector(state => state.dataReducer);
const { data } = dataReducer;
useEffect(() => getData(), []);
const getData = () => {
setIsFetching(true);
let url =
"https://my-json-server.typicode.com/mesandigital/demo/instructions";
axios
.get(url)
.then(res => res.data)
.then(data => dispatch(addData(data)))
.catch(error => alert(error.message))
.finally(() => setIsFetching(false));
};

获取的数据可以使用数据常量进行访问。因此,这意味着dataState的状态在获取后更新。但当我导航到其他屏幕并尝试访问dataState时,它返回undefined。我正在访问屏幕上的商店状态,如下所示:

const dataReducer = useSelector(state => state.dataReducer);
const { data } = dataReducer;

数据常量返回未定义的值。我是不是错过了什么?

好的,我在代码中发现了这个问题。我在使用Selector之后立即设置常量值。我直接调用useSelector常量,它就起作用了。问题是,当我调用它时,另一个常数没有设置。无论如何,谢谢

相关内容

  • 没有找到相关文章

最新更新