实现简单的 react-redux
2017-09-27 10:12
615 查看
http://www.jianshu.com/p/26bb9a27c77a?utm_campaign=maleskine&utm_content=note&utm_medium=pc_all_hots&utm_source=recommendation
原理就是把 redux 的 store,放在 react 的 context 里
React.js 的 context
动手实现 React-redux(一):初始化工程
动手实现 React-redux(二):结合 context 和 store
动手实现 React-redux(三):connect 和 mapStateToProps
动手实现 React-redux(四):mapDispatchToProps
动手实现 React-redux(五):Provider
动手实现 React-redux(六):React-redux 总结
作者:waka
链接:http://www.jianshu.com/p/26bb9a27c77a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原理就是把 redux 的 store,放在 react 的 context 里
React.js 的 context
动手实现 React-redux(一):初始化工程
动手实现 React-redux(二):结合 context 和 store
动手实现 React-redux(三):connect 和 mapStateToProps
动手实现 React-redux(四):mapDispatchToProps
动手实现 React-redux(五):Provider
动手实现 React-redux(六):React-redux 总结
import React, {Component} from 'react'; import PropTypes from 'prop-types'; export const connect = (mapStateToProps, mapDispatchToProps) => (WrappedComponent) => { class Connect extends Component { static contextTypes = { store: PropTypes.object }; constructor() { super(); this.state = { allProps: {} } } componentWillMount() { const {store} = this.context; this._updateProps(); store.subscribe(() => { this._updateProps(); }) } _updateProps() { const {store} = this.context; let stateProps = mapStateToProps ? mapStateToProps(store.getState(), this.props) : {}; // 额外传入 props,让获取数据更加灵活方便 let dispatchProps = mapDispatchToProps ? mapDispatchToProps(store.dispatch, this.props) : {}; this.setState({ allProps: { // 整合普通的 props 和从 state 生成的 props ...stateProps, ...dispatchProps, ...this.props } }) } render() { return <WrappedComponent {...this.state.allProps}/>; } } return Connect; }; export class Provider extends Component { static propTypes = { store: PropTypes.object, children: PropTypes.any }; static childContextTypes = { store: PropTypes.object }; getChildContext() { return { store: this.props.store } } render() { return <div> {this.props.children} </div> } }
作者:waka
链接:http://www.jianshu.com/p/26bb9a27c77a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- 基于React,Redux以及wilddog的聊天室简单实现
- 浅谈redux以及react-redux简单实现
- 使用mobx实现react的MVVM框架mobx-roof,比redux简单太多
- 基于React,Redux以及wilddog的聊天室简单实现
- React+Redux实现简单的待办事项列表ToDoList
- 基于React,Redux以及wilddog的聊天室简单实现
- React+Redux实现简单的待办事项列表ToDoList
- React-native简单button实现
- react初学者福利来了:react+redux实现一个列表的静态应用
- 前端用Webpact打包React后端Node+Express实现简单留言版
- React简单的分页代码实现(子组件向父组件传值)
- react-native简单demo:实现加载豆瓣电影列表
- 实现一个简单的订阅与发布模式的代码块,和redux
- React-Redux-Antd实现知乎日报项目(一)
- react-native,redux,redux-saga组合开发实现
- react-native 从简单的事件分发来介绍redux
- java识别验证码-用tess4j实现超简单调用tessreact-orc来破解验证码
- React路由 简单实现一个导航
- react + redux 实现幻灯片
- react+antd+feathers实现前后端简单的文件上传下载