Skip to content

Commit

Permalink
perf(core): improve field errors/success/warnings read performance
Browse files Browse the repository at this point in the history
  • Loading branch information
janryWang committed Nov 9, 2021
1 parent 712aba9 commit 32eca49
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
16 changes: 4 additions & 12 deletions packages/core/src/models/Field.ts
Expand Up @@ -48,6 +48,7 @@ import {
getValidFieldDefaultValue,
initializeStart,
initializeEnd,
createChildrenFeedbackFilter,
} from '../shared/internals'
import { Form } from './Form'
import { BaseField } from './BaseField'
Expand Down Expand Up @@ -275,10 +276,7 @@ export class Field<
}

get errors() {
return this.form.queryFeedbacks({
address: `${this.address}.**`,
type: 'error',
})
return this.form.errors.filter(createChildrenFeedbackFilter(this))
}

get selfWarnings() {
Expand All @@ -288,10 +286,7 @@ export class Field<
}

get warnings() {
return this.form.queryFeedbacks({
address: `${this.address}.**`,
type: 'warning',
})
return this.form.warnings.filter(createChildrenFeedbackFilter(this))
}

get selfSuccesses() {
Expand All @@ -301,10 +296,7 @@ export class Field<
}

get successes() {
return this.form.queryFeedbacks({
address: `${this.address}.**`,
type: 'success',
})
return this.form.successes.filter(createChildrenFeedbackFilter(this))
}

get selfValid() {
Expand Down
7 changes: 7 additions & 0 deletions packages/core/src/shared/internals.ts
Expand Up @@ -651,6 +651,13 @@ export const serialize = (model: any, getter?: any) => {
}
}

export const createChildrenFeedbackFilter = (field: Field) => {
const identifier = field.address?.toString()
return ({ address }: IFormFeedback) => {
return address.indexOf(identifier) === 0
}
}

export const createStateSetter = (model: any) => {
return batch.bound((setter?: any) => deserialize(model, setter))
}
Expand Down

0 comments on commit 32eca49

Please sign in to comment.