@talend/react-cmf
Version:
A framework built on top of best react libraries
45 lines (44 loc) • 1.56 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Saga = void 0;
exports.SagaComponent = SagaComponent;
var _react = require("react");
var _reactRedux = require("react-redux");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _utils = require("@talend/utils");
var _Saga = require("./Saga.saga");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function SagaComponent({
startSaga,
stopSaga,
saga,
sagaAttributes,
children = null
}) {
const id = (0, _react.useMemo)(_utils.randomUUID, []);
(0, _react.useEffect)(() => {
startSaga(id, saga, sagaAttributes);
return () => {
stopSaga(id);
};
// We don't want to trigger new start and stop, this component is not meant to handle dynamic props
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return children;
}
SagaComponent.propTypes = {
startSaga: _propTypes.default.func.isRequired,
stopSaga: _propTypes.default.func.isRequired,
saga: _propTypes.default.func.isRequired,
sagaAttributes: _propTypes.default.any,
children: _propTypes.default.node
};
SagaComponent.displayName = 'SagaComponent';
const mapDispatchToProps = dispatch => ({
startSaga: (id, sagaFunction, sagaAttributes) => dispatch(_Saga.actions.startSaga(id, sagaFunction, sagaAttributes)),
stopSaga: id => dispatch(_Saga.actions.stopSaga(id))
});
const Saga = exports.Saga = (0, _reactRedux.connect)(null, mapDispatchToProps)(SagaComponent);
//# sourceMappingURL=Saga.component.js.map
;