From 15d4ff4d5dc0dbb5c724c9e364d7810ff2525944 Mon Sep 17 00:00:00 2001 From: Erik Rasmussen Date: Wed, 21 Mar 2018 12:13:53 +0100 Subject: [PATCH] Fixed bug with postmount updates --- src/ReactFinalForm.js | 2 +- src/ReactFinalForm.test.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ReactFinalForm.js b/src/ReactFinalForm.js index cfb2ab2e..a8649b6d 100644 --- a/src/ReactFinalForm.js +++ b/src/ReactFinalForm.js @@ -102,6 +102,7 @@ export default class ReactFinalForm extends React.Component { if (this.mounted) { this.setState({ state }) } + this.mounted = true } handleSubmit = (event?: SyntheticEvent) => { @@ -125,7 +126,6 @@ export default class ReactFinalForm extends React.Component { ) this.form.resumeValidation() } - this.mounted = true } componentWillReceiveProps(nextProps: Props) { diff --git a/src/ReactFinalForm.test.js b/src/ReactFinalForm.test.js index 2a85e87d..a4c40ef5 100644 --- a/src/ReactFinalForm.test.js +++ b/src/ReactFinalForm.test.js @@ -390,6 +390,28 @@ describe('ReactFinalForm', () => { expect(unsubscribe).toHaveBeenCalled() }) + it('should show form as invalid on first load if field-level validation errors are present', () => { + // Debugging https://github.com/final-form/react-final-form/issues/196 + const render = jest.fn() + TestUtils.renderIntoDocument( +
+ {({ invalid }) => { + render(invalid) + return ( + (value ? undefined : 'Required')} + /> + ) + }} + + ) + expect(render).toHaveBeenCalledTimes(2) + expect(render.mock.calls[0][0]).toBe(false) + expect(render.mock.calls[1][0]).toBe(true) + }) + it('should work with server-side rendering', () => { const spy = jest.spyOn(global.console, 'error') ReactDOMServer.renderToString(