【发布时间】:2021-12-11 11:40:01
【问题描述】:
如果 StackOverflow 上有类似的问题,我深表歉意,但经过 3 小时的搜索,我找不到。
我正在尝试学习 Redux 并通过 ReactJS 获得初学者的熟练程度,并具有以下 thunk 功能:
export const listProducts = () => async (dispatch) => {
try{
dispatch({ type:PRODUCT_LIST_REQUEST })
const { data } = await axios.get('/api/products/')
dispatch({ type:PRODUCT_LIST_SUCCESS, payload: data })
}catch(error){
dispatch({
type:PRODUCT_LIST_FAIL,
payload: misc_data_here
})
}}
此函数在dispatch 函数内的另一个文件中被调用,相关代码如下:
function HomeScreen() {
const dispatch = useDispatch()
const productList = useSelector(state => state.productList)
const { error, loading, products } = productList
useEffect(() => {
dispatch(listProducts())
}, [dispatch])
return (rest of UI...]
我的问题如下:
listProducts 在这种情况下究竟是如何被 redux 调用的?如果我的(较差的)理解是正确的,则需要像 listProducts()(dispatch function here) 一样调用它。 thunk (async (dispatch)) 究竟是如何获得 dispatch 函数的,以及 listProducts 函数实际返回到 HomeScreen() 内的 dispatch 调用中的内容?
【问题讨论】:
标签: javascript reactjs redux redux-thunk