有关mapStateToProps、mapDispatchToProps的问题

来源:9-10 【RESTful进阶(选修)】Richardson成熟度模型与HATOAS

莜紫兮

2021-11-18

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

写回答

1回答

阿莱克斯刘

2021-11-20

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的类型先留给悬念。先请继续课程,后续课程会详细讲解。

1
1
莜紫兮
老师的课程已经全部看完,没有看到有关dispatch类型的讲解,请老师明示
2021-11-21
共1条回复

React18 系统精讲 结合TS打造旅游电商平台

React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能

1993 学习 · 1015 问题

查看课程