UNPKG

gfs-react-dm

Version:

简化react和redux的繁杂流程,更简单的数据操作管理

78 lines (64 loc) 2.27 kB
//import {bindingMixin} from 'gfs-react-redux-twoway-binding' 'use strict'; exports.__esModule = true; exports.View = View; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _reactRedux = require('react-redux'); var _extend = require('extend'); var _extend2 = _interopRequireDefault(_extend); /** * 视图 * @class View * */ /** * 一个装饰器方法,用于装饰类,被装饰的类为页面视图,或者说是react的component,并不是每一个component都需要被装饰 * @method View * @param action {object} control对象,可以是一个数组,比如:View([TestControl,Test2Control] ) * @return class * @example * * import {View} from 'gfs-react-mvc' * import TestControl from './TestControl' * //这里由于@为文档关键符号,所以下面将以$代替 * //@View(TestControl) * $View(TestControl) class TestComponent extends Component { constructor(props) { super(props) } componentDidMount(){ setTimeout(()=>{ //调用control中的action this.props.save(this) },1000) } static defaultProps={} render() { console.log('age:',this.props.testmodel.get('age') ) return ( <div> {this.props.testmodel.get('age')} </div> ) } } * */ function View(actions) { return function (target) { if (actions) { actions = Array.prototype.concat.call([], actions); var controls = {}; for (var i = 0, len = actions.length; i < len; i++) { controls = _extend2['default'](controls, actions[i].controls); } return _reactRedux.connect(function (state) { var stories = {}; for (var i = 0, len = actions.length; i < len; i++) { stories[actions[i].modelName] = state[actions[i].modelName]; } return stories; }, controls || {})(target); } return target; }; }