React-Redux

这个库出现的意义就是将redux和react进行连接。能够让各子组件能够使用到存储在redux store中的数据。也进行了很多性能优化的地方。
connect.js

import React from 'react'
import {bindActionCreators} from '../redux'
import ReactReduxContext from './ReactReduxContext'

export default function connect (mapStateToProps, mapDispatchToProps) {
  return function (WrappedComponent) {
    return class extends React.Component{
      static contextType = ReactReduxContext

      constructor (props, context) {
        super(props)
        this.state = mapStateToProps(context.store.getState())
      }
      componentDidMount () {
        this.unsubscribe = this.context.store.subscribe(() => {
          this.setState(mapStateToProps(this.context.store.getState()))
        })
      }
      componentWillUnmount () {
        this.unsubscribe()
      }
      render () {
        let actions = bindActionCreators(mapDispatchToProps, this.context.store.dispatch)
        return <WrappedComponent {...actions} {...this.state} />
      }
    }
  }
}

provider.js

import React, {Component} from 'react'
import ReactReduxContext from './ReactReduxContext'

export default class Provider extends Component{
  render () {
    return <ReactReduxContext.Provider value={{store: this.props.store}}>
      {this.props.children}
    </ReactReduxContext.Provider>
  }
}

ReactReduxContext.js

import React from 'react'

export default React.createContext(null)