请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

有关mapStateToProps、mapDispatchToProps的问题

图片描述
1、老师,connect函数接收两个参数mapStateToPropsmapDispatchToProps。且mapStateToPropsmapDispatchToProps都是函数,哪为什么不把函数直接写在connect里减少mapStateToPropsmapDispatchToProps的变量定义呢?是为了获取mapStateToPropsmapDispatchToProps的类型嘛?
2、mapDispatchToProps 函数中参数 dispatch 的类型是什么呢?图片中我给 dispatch 的类型定义为了 any 才没有报错(参数“dispatch”隐式具有“any”类型)。视频里老师应该是把 “不允许隐式的any类型”改成false了。"noImplicitAny": false,

正在回答 回答被采纳积分+3

1回答

阿莱克斯刘 2021-11-20 07:56:02

1. 第一个问题,connct方法实际上使用的是HOC高阶方法来处理,而高阶方法的底层原理实际上是柯里化(curry)。基本原理就是向一个方法传入部分参数,同时返回一个匿名方法接受第二部分参数。所以,最后调用起来的表现形式看起来就非常古怪: fn(a)(b)。

举个例子:

function curry(f) { 
  return function(a, b) {
     return f(a, b);
  };
}

function sum(a, b) {
  return a + b;
}

curry(sum)(1, 2); //3

甚至是这样:

function curry(f) { // curry(f) 执行柯里化转换
  return function(a) {
    return function(b) {
      return f(a, b);
    };
  };
}
// 用法
function sum(a, b) {
  return a + b;
}
let curriedSum = curry(sum);
alert( curriedSum(1)(2) ); // 3

参考资料:https://zh.javascript.info/currying-partials

2. 第二个问题,dispatch的类型先留给悬念。先请继续课程,后续课程会详细讲解。

0 回复 有任何疑惑可以回复我~
  • 提问者 莜紫兮 #1
    老师的课程已经全部看完,没有看到有关dispatch类型的讲解,请老师明示
    回复 有任何疑惑可以回复我~ 2021-11-21 16:44:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信