为了账号安全,请及时绑定邮箱和手机立即绑定

redux中的一个问题,求教

redux中的一个问题,求教

肥皂起泡泡 2019-05-24 11:09:13
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.jsimportthunkfrom'redux-thunk'import{getAllProducts}from'./actions'store.dispatch(getAllProducts())但是对于addToCart函数的调用,我不太理解import{addToCart}from'../actions'constProductsContainer=({products,addToCart})=>({products.map(product=>addToCart(product.id)}/>)})addToCart是在点击事件的处理函数中,addToCart(product.id)的执行结果是个函数。但和getAllProducts不同,这个生成的函数并不是store.dispatch()的参数,那么这个函数是如何执行的呢?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

好问题,哈哈,因为我也没看懂,专门去查了下React-Redux源码然后我们再看下官方范例的代码中,最后的代码:
exportdefaultconnect(
mapStateToProps,
{addToCart}
)(ProductsContainer)
mapDispatchToProps方法有三种可能:
方法。这个不用解释,都看的懂
undefined。这个也不用解释,组件内会获得dispatch方法,交给组件内自己分发action。
对象。也就是我们遇到的场景,这个源码中有特殊处理,把对象转换成方案1了。
解释完毕
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 469 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信