如何输出通过 Redux Thunk 接收到的数据?
How do I output the data received through Redux Thunk?
我目前正在掌握 redux,还没有真正弄清楚如何使用 thunk 输出从服务器获得的数据。我在 useEffect 中执行 thunk 调度,获取服务器数据,但它们不输出,因为它们在几秒钟后出现,所以在 useState 中只是一个空数组,并存储所需的数据
// retrieve data from the store
const servicesData = useAppSelector((state) => state.services.services);
const [services, setServices] = useState(servicesData);
// store
export const store = createStore(
reducers,
{},
composeWithDevTools(applyMiddleware(thunk))
);
我知道useState不会在几秒后获取数据,原来需要通过setState添加数据,但是为什么会thunk?接收任何数据时是否有必要使用它?我完全糊涂了
Redux Thunk 是允许您 return 功能的中间件,
而不仅仅是动作,在 Redux 中。
这允许延迟操作,包括使用承诺。
此中间件的主要用例之一是
用于处理可能不同步的操作,
例如,使用 axios 发送 GET 请求。
Redux Thunk 允许我们异步分派这些动作
并解决每个获得 returned 的承诺。
`从'@reduxjs/toolkit'导入{configureStore}
从 './reducer' 导入 rootReducer
从'./api'
导入{myCustomApiService}
const store = configureStore({
reducer: rootReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
thunk: {
extraArgument: myCustomApiService
}
})
})
// later
function fetchUser(id) {
// The `extraArgument` is the third arg for thunk functions
return (dispatch, getState, api) => {
// you can use api here
}
}
您的问题是 useState
电话。永远不要将 useSelector
的结果放入 useState
。它将用作 useState
的“初始状态”,并且当 useSelector
的值更新时永远不会更新该状态 - useState
不能那样工作。直接使用商店中的值即可。
const services = useAppSelector((state) => state.services.services);
我目前正在掌握 redux,还没有真正弄清楚如何使用 thunk 输出从服务器获得的数据。我在 useEffect 中执行 thunk 调度,获取服务器数据,但它们不输出,因为它们在几秒钟后出现,所以在 useState 中只是一个空数组,并存储所需的数据
// retrieve data from the store
const servicesData = useAppSelector((state) => state.services.services);
const [services, setServices] = useState(servicesData);
// store
export const store = createStore(
reducers,
{},
composeWithDevTools(applyMiddleware(thunk))
);
我知道useState不会在几秒后获取数据,原来需要通过setState添加数据,但是为什么会thunk?接收任何数据时是否有必要使用它?我完全糊涂了
Redux Thunk 是允许您 return 功能的中间件, 而不仅仅是动作,在 Redux 中。 这允许延迟操作,包括使用承诺。
此中间件的主要用例之一是 用于处理可能不同步的操作, 例如,使用 axios 发送 GET 请求。 Redux Thunk 允许我们异步分派这些动作 并解决每个获得 returned 的承诺。 `从'@reduxjs/toolkit'导入{configureStore} 从 './reducer' 导入 rootReducer 从'./api'
导入{myCustomApiService}const store = configureStore({
reducer: rootReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
thunk: {
extraArgument: myCustomApiService
}
})
})
// later
function fetchUser(id) {
// The `extraArgument` is the third arg for thunk functions
return (dispatch, getState, api) => {
// you can use api here
}
}
您的问题是 useState
电话。永远不要将 useSelector
的结果放入 useState
。它将用作 useState
的“初始状态”,并且当 useSelector
的值更新时永远不会更新该状态 - useState
不能那样工作。直接使用商店中的值即可。
const services = useAppSelector((state) => state.services.services);