Писал приложение на Angular 1.x Приложение большое и вскоре стали заметны тормоза, оптимизация частично улучшила ситуацию, но не достаточно. Хочу самые тяжелые штуки перевести на React, полностью переписывать приложение на React не хочется (слишком большое)
Как при обновление scope перерендерить (из Angular директивы) React-компонент?
Код Angular директивы:
class IstManagerListRowDirectiveClass extends IstDirectiveClass {
constructor() {
this.restrict = "E";
this.scope = false;
this.uid = null;
super.constructor();
}
unboundLink(scope, element, attr) {
/*this.watchCollection - обертка над scope.$watchCollection()*/
this.watchCollection("uid", (newUid, oldUid) => {
if(angular.isNumber(newUid) || angular.isString(newUid)){
this.uid = newUid;
const ReactElement = (<IstManagerListRowComponent managerUid = {this.uid}></IstManagerListRowComponent>);
ReactDOM.render(ReactElement, element[0]);
} else {
console.error("Класс: '"+this.constructor.name+"'; uid должен быть строкой или числом");
}
});
}
static createInstance() {
IstManagerListRowDirectiveClass.instance = new IstManagerListRowDirectiveClass();
return IstManagerListRowDirectiveClass.instance;
}
};
app.directive("istManagerListRow", IstManagerListRowDirectiveClass.createInstance);
Код React компонента:
class IstManagerListRowComponent extends React.Component{
constructor(data){
super.constructor(data);
this.state = {
managerUid: this.props.managerUid
};
}
render() {
return (<div className="table-row">this.state.managerUid </div>);
}
}