fix: 处理 schema id 重复的问题

This commit is contained in:
力皓 2020-09-14 11:24:52 +08:00
parent 6e1eac0fc5
commit d2316bec65
6 changed files with 13 additions and 11 deletions

View File

@ -1,6 +1,6 @@
{
"lerna": "2.11.0",
"version": "independent",
"version": "1.0.9",
"npmClient": "tyarn",
"registry": "http://registry.npm.alibaba-inc.com",
"useWorkspaces": true,

View File

@ -15,6 +15,7 @@
"lint": "eslint --ext .ts,.tsx,.js,.jsx ./ --quiet",
"lint:fix": "eslint --ext .ts,.tsx,.js,.jsx ./ --quiet --fix",
"pub": "lerna publish --force-publish --cd-version prepatch",
"pubbeta": "lerna publish --force-publish --cd-version prerelease --npm-tag beta",
"setup": "./scripts/setup.sh",
"start": "./scripts/start.sh",
"start:server": "./scripts/start-server.sh",

View File

@ -38,6 +38,8 @@ export default class DragResizeEngine {
private dragResizing = false;
private designer: Designer;
constructor(designer: Designer) {
this.designer = designer;
this.emitter = new EventEmitter();

View File

@ -160,11 +160,11 @@ export class DocumentModel {
/**
* id
*/
nextId() {
let id;
do {
id = `node_${ (this.id.slice(-10) + (++this.seqId).toString(36)).toLocaleLowerCase()}`;
} while (this.nodesMap.get(id));
nextId(possibleId: string | undefined) {
let id = possibleId;
while (!id || this.nodesMap.get(id)) {
id = `node_${(this.id.slice(-10) + (++this.seqId).toString(36)).toLocaleLowerCase()}`;
}
return id;
}

View File

@ -156,7 +156,7 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
constructor(readonly document: DocumentModel, nodeSchema: Schema) {
const { componentName, id, children, props, ...extras } = nodeSchema;
this.id = id || document.nextId();
this.id = document.nextId(id);
this.componentName = componentName;
if (this.componentName === 'Leaf') {
this.props = new Props(this, {

View File

@ -123,7 +123,7 @@ class Layout extends Component<{ rendererContainer: SimulatorRendererContainer }
}
@observer
class Renderer extends Component<{
class Renderer extends Component<{
rendererContainer: SimulatorRendererContainer;
documentInstance: DocumentInstance }
> {
@ -132,10 +132,9 @@ class Renderer extends Component<{
}
render() {
const { documentInstance } = this.props;
const { documentInstance, rendererContainer: renderer } = this.props;
const { container } = documentInstance;
const { designMode, device } = container;
const { rendererContainer: renderer } = this.props;
return (
<LowCodeRenderer
schema={documentInstance.schema}
@ -190,7 +189,7 @@ class Renderer extends Component<{
return createElement(
getDeviceView(Component, device, designMode),
viewProps,
children,
leaf?.isContainer() ? (children == null ? [] : Array.isArray(children) ? children : [children]) : null,
);
}}
onCompGetRef={(schema: any, ref: ReactInstance | null) => {