请问dva中 connect()()的用法。

这段代码是dva的基础代码

import React from 'react';
import { connect } from 'dva';

function IndexPage() {
  return (
    <div> this is a div </div>
  );
}

export default connect()(IndexPage);

【请问】最后一行这个 connect()(IndexPage) 怎么理解?
还要请教:这两个括号的在一起的写法是es6语吗?(我在阮一峰的es6指南中没找到这个语法说明,我要看箭头函数一章,还是到哪章去了解这个()()
老司机能提供一个纯js的双括号函数案例吗?

p.s.
我思考了一下:之前见过 function(){}() 这样的最后放一个括号表示立即执行。请问和上边的这个有相通的地方吗?

谢谢您前来科普帮助,感谢老司机指路----O(∩_∩)O

//▼补充代码,
import React from 'react';
import { connect } from 'dva';
import { Table, Pagination, Popconfirm, Button } from 'antd';
import { routerRedux } from 'dva/router';

function stuIndexPage({ dispatch, list: dataSource, loading, total, page: current }) {
  return (
    <div> index 首页 </div>
  );
}

function mapStateToProps({ stuIndexPage }){
    return {
          stuIndexPage
    };
}
//▼还有这个,两个括号都传参了,搞不太懂是什么作用
export default  connect(mapStateToProps)(stuIndexPage);
阅读 22.6k
6 个回答

connect 函数的返回值还是一个函数 这样说你懂了没

connect()(IndexPage)
// =>
const bindToComponent = connect()
export default bindToComponent(IndexPage)

export default connect(从 model 的 state 中获取数据)(要将数据绑定到哪个组件)

这个叫做柯里化

let add = function(x){
    return function(y){
        return x+y;
    }
}
add(3)(4); //7

我想通了,我想通了,这不是什么es6语法。
感谢 lixuejiang 老师。函数的返回值还是一个函数 提醒了我!
也要感谢 u3u 老师,看头像疑似是个程序媛。其中connect 函数的返回值还是一个函数 提醒了我!
我写了个demo

function connect(howWay){
    var toAlert = function(someWords){
        alert(someWords);
    }
    var toConsoleLog = function(someWords){
        console.log(someWords);
    }
    if(howWay=='alert'){
        return toAlert
    }else{
        return toConsoleLog
    }
}
//▼通过alert弹出来ok
connect('alert')('ok');
//▼通过控制台弹出来ok
connect()('ok');
connect('alert')('ok');
//这里一参表示返回一个什么样的【方法】
//二参表示用刚刚返回的【方法】处理什么,示例中处理字符【ok】

两个括号不是ES6的写法,只不过是第一次调用返回了一个函数,可以被再次调用,类型

function connect(props) {
    return function(component) {
        return <component ...props/>
    }
}
let connect = function (mapFunc) {
    // ...
    return function (component) {
        // ...
        return component;
    }
}

这么写出来你应该就明白了。

这个说起来挺长的,你去看下react小书 http://huziketang.com/books/r...,着一张里面有详解,react小书第三阶段要10块钱,书写的挺好的,建议整体看一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏