Recompose初识与Redux的联想

2018-07-13  本文已影响110人  张培_

最近,项目中在使用react-google-maps,研究期间发现了Recompose这个库,一个看起来非常函数式的库,第一眼看上去感觉很不好,但是也引起了我研究的兴趣。

项目背景

Recompose出现

Recompose的出现,感觉我的所有问题都有了解答。

Recompose是一个什么样的库?

按照他的文档描述: 他就是Reactlodash,帮助你非常简单的将业务逻辑和组件分离。

Recompose的启发

说到数据和视图的分离,首先想到的是connect,之前觉得reduxconnect函数是一个很难让人理解的东西

const mapStateToProps = state => ({data: state.data})

const mapDispatchToProps = dispatch => ({
    handleClick: (data) => dispatch(aciton(data))
})

export default connect(mapStateToProps,mapDispatchToProps)(View); 

一个connect函数接受两个函数作为参数返回一个函数而这个函数接受了组件作为参数又返回了一个组件。其实现在想想是很好的处理方式。

connect解读

connect函数接受function作为参数,利用了柯里化实现,返回了一个高阶组件,在用的过程中一直不能理解的点有两个:

看完源码之后有了一些理解:

我认为在这里使用柯里化原因:

使用柯里化的优点:
- 避免了给一个函数传入大量的参数
- 降低耦合度和代码冗余,便于复用

我认为在这里connect接收两个函数做参数的原因:

那么继续follow这个思路,为了保证组件的common,那么如何reduce也由用户传入那函数就更加通用了。

image.png

Recompose解决痛点

。。。。

优点超多,由于这个库中文的文档比较少,所以接下来我会开始写一写recompose各种函数的使用方法

上一篇下一篇

猜你喜欢

热点阅读