boilerplate for Slot + React (Update)
export default function reviewPreviewContainer(slot) {
const $store = slot.requireComponent('store');
let entityId;
let moduleInstance;
let unsubscribe = noop;
let moduleRerender = noop;
function entityDeleteHandler() {
$store.dispatch(
deleteEntityAction(entityId)
);
}
function buildProps() {
const entityData = $store.getEntitiyData(); // Как пример, такого метода нет
return {
entity: entityData,
handleDeleteEntity: entityDeleteHandler
};
}
return {
init(data) {
entityId = data.entityId;
moduleInstance = slot.container(ReactComponent, buildProps());
},
clientInit() {
moduleRerender = debounce(50, () => {
if (slot.stage & slot.STAGE_ALIVE) {
moduleInstance.update(buildProps());
}
});
moduleRerender();
unsubscribe = $store.subscribe(moduleRerender);
},
viewContext() {
return moduleInstance;
},
dispose() {
unsubscribe();
}
};
}