redux中的一个问题,求教

Redux官方案例shoppingcart中,src/actions/index.js文件
exportconstgetAllProducts=()=>dispatch=>{
shop.getProducts(products=>{
dispatch(receiveProducts(products))
})
}
exportconstaddToCart=productId=>(dispatch,getState)=>{
if(getState().products.byId[productId].inventory>0){
dispatch(addToCartUnsafe(productId))
}
}
对于getAllProducts函数的调用我理解了。getAllProducts()的执行结果虽然是个函数,但因为有引用的redux-thunk,所以store.dispatch()的参数可以是getAllProducts()所生成的函数。
//src/index.js
importthunkfrom'redux-thunk'
import{getAllProducts}from'./actions'
store.dispatch(getAllProducts())
但是对于addToCart函数的调用,我不太理解
import{addToCart}from'../actions'
constProductsContainer=({products,addToCart})=>(
{products.map(product=>
key={product.id}
product={product}
onAddToCartClicked={()=>addToCart(product.id)}/>
)}
)
addToCart是在点击事件的处理函数中,addToCart(product.id)的执行结果是个函数。但和getAllProducts不同,这个生成的函数并不是store.dispatch()的参数,那么这个函数是如何执行的呢?
肥皂起泡泡
浏览 470回答 2
2回答

RISEBY

好问题,哈哈,因为我也没看懂,专门去查了下React-Redux源码然后我们再看下官方范例的代码中,最后的代码:exportdefaultconnect(mapStateToProps,{addToCart})(ProductsContainer)mapDispatchToProps方法有三种可能:方法。这个不用解释,都看的懂undefined。这个也不用解释,组件内会获得dispatch方法,交给组件内自己分发action。对象。也就是我们遇到的场景,这个源码中有特殊处理,把对象转换成方案1了。解释完毕
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript