Skip to content

Commit 431c3db

Browse files
authored
fix(react): fix markup field is not work with strict-mode (#3088)
1 parent fcb4e4c commit 431c3db

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

docs/guide/issue-helper.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ const createIssueURL = ({
100100
type,
101101
title,
102102
version,
103-
package,
103+
package: pkg,
104104
reproduceLink,
105105
reproduceStep,
106106
expected,
@@ -129,7 +129,7 @@ ${expected || ''}
129129
${actually || ''}
130130
131131
### Package
132-
${package}@${version}
132+
${pkg}@${version}
133133
134134
---
135135

docs/guide/issue-helper.zh-CN.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ const createIssueURL = ({
100100
type,
101101
title,
102102
version,
103-
package,
103+
package: pkg,
104104
reproduceLink,
105105
reproduceStep,
106106
expected,
@@ -129,7 +129,7 @@ ${expected || ''}
129129
${actually || ''}
130130
131131
### Package
132-
${package}@${version}
132+
${pkg}@${version}
133133
134134
---
135135
@@ -351,7 +351,7 @@ export default () => {
351351
请尽可能详尽地说明这个需求的用例和场景。最重要的是:解释清楚是怎样的用户体验需求催生了这个功能上的需求。
352352
</p>
353353
<p>
354-
Fomrily 的一个重要设计原则是保持 API
354+
Formily 的一个重要设计原则是保持 API
355355
的简洁和直接。通常来说,我们只考虑添加在现有的 API
356356
下无法轻松实现的功能。新功能的用例也应当足够常见。
357357
</p>

packages/react/src/components/SchemaField.tsx

+14-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useContext, Fragment } from 'react'
22
import { ISchema, Schema } from '@formily/json-schema'
3-
import { RecursionField } from '.'
3+
import { RecursionField } from './RecursionField'
44
import { render } from '../shared/render'
55
import {
66
SchemaMarkupContext,
@@ -78,25 +78,22 @@ export function createSchemaField<Components extends SchemaReactComponents>(
7878

7979
SchemaField.displayName = 'SchemaField'
8080

81-
function MarkupField<
82-
Decorator extends ReactComponentPath<Components>,
83-
Component extends ReactComponentPath<Components>
84-
>(props: ISchemaMarkupFieldProps<Components, Component, Decorator>) {
81+
function MarkupRender(props: any) {
8582
const parent = useContext(SchemaMarkupContext)
8683
if (!parent) return <Fragment />
8784
const renderChildren = () => {
8885
return <React.Fragment>{props.children}</React.Fragment>
8986
}
9087
const appendArraySchema = (schema: ISchema) => {
91-
if (parent.items) {
92-
return parent.addProperty(name, schema)
88+
const items = parent.items as Schema
89+
if (items && items.name !== props.name) {
90+
return parent.addProperty(props.name, schema)
9391
} else {
94-
return parent.setItems(props)
92+
return parent.setItems(schema)
9593
}
9694
}
97-
const name = props.name || getRandomName()
9895
if (parent.type === 'object' || parent.type === 'void') {
99-
const schema = parent.addProperty(name, props)
96+
const schema = parent.addProperty(props.name, props)
10097
return (
10198
<SchemaMarkupContext.Provider value={schema}>
10299
{renderChildren()}
@@ -116,6 +113,13 @@ export function createSchemaField<Components extends SchemaReactComponents>(
116113
}
117114
}
118115

116+
function MarkupField<
117+
Decorator extends ReactComponentPath<Components>,
118+
Component extends ReactComponentPath<Components>
119+
>(props: ISchemaMarkupFieldProps<Components, Component, Decorator>) {
120+
return <MarkupRender {...props} name={props.name || getRandomName()} />
121+
}
122+
119123
MarkupField.displayName = 'MarkupField'
120124

121125
function StringField<

0 commit comments

Comments
 (0)