diff --git a/.gitignore b/.gitignore index a88d3e8c..cb635e7e 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ build dist lib coverage -yarn.lock \ No newline at end of file +yarn.lock +es/ \ No newline at end of file diff --git a/src/createBaseForm.js b/src/createBaseForm.js index 67811eac..f8c3c44c 100644 --- a/src/createBaseForm.js +++ b/src/createBaseForm.js @@ -77,7 +77,7 @@ function createBaseForm(option = {}, mixins = []) { }, onCollectCommon(name, action, args) { - const fieldMeta = this.fieldsStore.getFieldMeta(name); + const fieldMeta = this.fieldsStore.getFieldMeta(name) || {}; if (fieldMeta[action]) { fieldMeta[action](...args); } else if (fieldMeta.originalProps && fieldMeta.originalProps[action]) { @@ -147,7 +147,7 @@ function createBaseForm(option = {}, mixins = []) { getFieldDecorator(name, fieldOption) { const props = this.getFieldProps(name, fieldOption); return (fieldElem) => { - const fieldMeta = this.fieldsStore.getFieldMeta(name); + const fieldMeta = this.fieldsStore.getFieldMeta(name, true); const originalProps = fieldElem.props; if (process.env.NODE_ENV !== 'production') { const valuePropName = fieldMeta.valuePropName; @@ -207,7 +207,7 @@ function createBaseForm(option = {}, mixins = []) { validate, } = fieldOption; - const fieldMeta = this.fieldsStore.getFieldMeta(name); + const fieldMeta = this.fieldsStore.getFieldMeta(name, true); if ('initialValue' in fieldOption) { fieldMeta.initialValue = fieldOption.initialValue; } diff --git a/src/createFieldsStore.js b/src/createFieldsStore.js index 3ff6f9e6..352c6629 100644 --- a/src/createFieldsStore.js +++ b/src/createFieldsStore.js @@ -94,8 +94,10 @@ class FieldsStore { this.fieldsMeta[name] = meta; } - getFieldMeta(name) { - this.fieldsMeta[name] = this.fieldsMeta[name] || {}; + getFieldMeta(name, create) { + if (create) { + this.fieldsMeta[name] = this.fieldsMeta[name] || {}; + } return this.fieldsMeta[name]; } @@ -162,7 +164,7 @@ class FieldsStore { .map(name => ({ name, dirty: false, - value: this.getFieldMeta(name).initialValue, + value: this.getFieldMeta(name) && this.getFieldMeta(name).initialValue, })) .reduce((acc, field) => set(acc, field.name, createFormField(field)), {}); }