hacksaw-react
Advanced tools
Comparing version 0.1.0 to 0.2.0
@@ -7,2 +7,4 @@ 'use strict'; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
@@ -53,12 +55,51 @@ | ||
objects.forEach(function (obj) { | ||
obj.listen(_this2.rerender); | ||
if (obj.context) { | ||
// it's store | ||
obj.listen(_this2.rerender); | ||
} else { | ||
// it's function | ||
_this2.storeProps = obj(_this2.props); | ||
Object.keys(_this2.storeProps).forEach(function (key) { | ||
_this2.storeProps[key].listen(_this2.rerender); | ||
}); | ||
} | ||
}); | ||
} | ||
}, { | ||
key: 'componentWillReceiveProps', | ||
value: function componentWillReceiveProps(nextProps) { | ||
var _this3 = this; | ||
objects.forEach(function (obj) { | ||
if (obj.context) return; | ||
Object.keys(_this3.storeProps).forEach(function (key) { | ||
_this3.storeProps[key].unlisten(_this3.rerender); | ||
}); | ||
_this3.storeProps = obj(nextProps); | ||
Object.keys(_this3.storeProps).forEach(function (key) { | ||
_this3.storeProps[key].listen(_this3.rerender); | ||
}); | ||
}); | ||
} | ||
}, { | ||
key: 'componentWillUnmount', | ||
value: function componentWillUnmount() { | ||
var _this3 = this; | ||
var _this4 = this; | ||
objects.forEach(function (obj) { | ||
obj.unlisten(_this3.rerender); | ||
if (obj.context) { | ||
// it's store | ||
obj.unlisten(_this4.rerender); | ||
} else { | ||
// it's function | ||
_this4.storeProps = obj(_this4.props); | ||
Object.keys(_this4.storeProps).forEach(function (key) { | ||
_this4.storeProps[key].unlisten(_this4.rerender); | ||
}); | ||
} | ||
}); | ||
@@ -69,3 +110,3 @@ } | ||
value: function render() { | ||
return _react2.default.createElement(Klass, this.props); | ||
return _react2.default.createElement(Klass, _extends({}, this.props, this.storeProps)); | ||
} | ||
@@ -72,0 +113,0 @@ }]); |
@@ -17,2 +17,3 @@ { | ||
"babel-plugin-transform-decorators-legacy": "^1.3.4", | ||
"babel-polyfill": "^6.20.0", | ||
"babel-preset-es2015": "6.9.0", | ||
@@ -23,3 +24,3 @@ "babel-preset-react": "^6.16.0", | ||
"enzyme": "^2.6.0", | ||
"hacksaw": "0.1.0", | ||
"hacksaw": "0.3.0", | ||
"istanbul": "^1.0.0-alpha.2", | ||
@@ -32,3 +33,3 @@ "jsdom": "^9.8.3", | ||
}, | ||
"version": "0.1.0" | ||
"version": "0.2.0" | ||
} |
@@ -17,2 +17,21 @@ hacksaw-react | ||
@listener(props => ({ | ||
store1: Store1.context(...), | ||
store2: Store2.context(...), | ||
... | ||
})) | ||
class AComponent extends Compoent { | ||
render() { | ||
const { store1, store2 } = this.props; | ||
const items = store1.all; | ||
... | ||
} | ||
} | ||
``` | ||
or | ||
```javascript | ||
import { listener } from 'hacksaw-react'; | ||
@listener(context1, context2, ...) | ||
@@ -19,0 +38,0 @@ class AComponent extends Compoent { |
16046
338
67
16