When calling model.doAction(...) success, onModelChange function is called twice.
onRenderTabSet = (node: (TabSetNode | BorderNode), renderValues: ITabSetRenderValues) => { renderValues.stickyButtons.push( <button key="Add" title="Add" className="flexlayout__tab_toolbar_button" onClick={() => { model.doAction(Actions.addNode({ component: "placeholder", name: "Added " + nextAddIndex.current++ }, node.getId(), DockLocation.CENTER, -1, true)); }} ><AddIcon/></button>); }