В настоящее время я внедряю пользовательский список в приложение, управляемое моделью. Я заметил, что при фильтрации данных вызывается метод init, а также метод updateView
, более того, метод updateView
вызывается 3 раза. Однако новое представление не отображается.
Я предполагаю, что асинхронные обещания неправильно упорядочиваются и обрабатываются моими компонентами, поэтому в конце метод init
сбрасывает все или перезаписывает егоисходные данные.
Как правильно сделать это?
- Первоначально визуализировать компоненты (под этим я подразумеваю код визуализации в методе
init
или updateView
)? - если данные обновляются, как нужно обрабатывать асинхронные вызовы для повторной визуализации представления?
В настоящее время код выглядит следующим образом:
public init(context: ComponentFramework.Context<IInputs>, notifyOutputChanged: () => void, state: ComponentFramework.Dictionary, container: HTMLDivElement) {
this._context = context;
//load the global context with the app properties.
this._globalContext = Xrm.Utility.getGlobalContext();
this._globalContext.getCurrentAppProperties().then((appProperties:any) =>{
this._currentAppProperties = appProperties;
this._projectList = React.createElement(ProjectDetailList,{context:this._context, appProperties: this._currentAppProperties, globalContext: this._globalContext});
ReactDOM.render(React.createElement(Fabric, null, this._projectList), container);
}, (error:any) =>{console.log(error)});
}
public updateView(context: ComponentFramework.Context<IInputs>): void {
// storing the latest context from the control.
this._context = context;
this._globalContext = Xrm.Utility.getGlobalContext();
this._globalContext.getCurrentAppProperties().then((appProperties:any) =>{
this._currentAppProperties = appProperties;
ReactDOM.render(React.createElement(Fabric, null, React.createElement(ProjectDetailList,{context:this._context, appProperties: this._currentAppProperties, globalContext: this._globalContext})), this._container);
}, (error:any) =>{console.log(error)});
console.log("NEW CONTEXT!!!! ->>>>>>>>>>>>>>>>>>>>>>>")
console.log(this._currentAppProperties);
console.log(context);
console.log(this._context);
}