gfs-react-dm
Version:
简化react和redux的繁杂流程,更简单的数据操作管理
78 lines (64 loc) • 2.27 kB
JavaScript
//import {bindingMixin} from 'gfs-react-redux-twoway-binding'
;
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;
};
}