Comments (2)
It turns out the problem is solved by passing { pure: false }
as an option to connect()
since redux assumes a component to receive updates either from props
or from the store.
Alternatively you could use something like this, by connecting the component that receives the formAPI
inside the FormField
import React from 'react';
import { FormField } from 'react-form';
import { connect } from 'react-redux';
function FormInput({ foobar, getValue, setValue }) {
const value = getValue() || 0;
const onClick = () => {
setValue(value + 1);
}
return (
<div>
<p>click me</p>
<p>{foobar}</p>
<button onClick={onClick}>Clicked { value } times</button>
</div>
)
}
const mapStateToProps = state => {
return {
foobar: state.value
}
};
FormInput = connect(mapStateToProps)(FormInput)
function Input(props) {
return (
<FormField field='foo'>
{props => <FormInput {...props} />}
</FormField>
)
};
export default Input;
Or alternatively:
import React from 'react';
import { FormField } from 'react-form';
import { connect } from 'react-redux';
import { compose } from 'redux';
function withFormField(field) {
return WrappedComponent => props => {
return (
<FormField field={field}>
{(formApi) => {
const allProps = {
...props,
...formApi
};
return (
<WrappedComponent {...allProps} />
)
}}
</FormField>
)
}
}
function Input({ foobar, getValue, setValue }) {
const value = getValue() || 0;
const onClick = () => {
setValue(value + 1);
}
return (
<div>
<p>click me</p>
<p>{foobar}</p>
<button onClick={onClick}>Clicked { value } times</button>
</div>
)
}
const mapStateToProps = state => {
return {
foobar: state.value
}
};
export default compose(
withFormField('foo'),
connect(mapStateToProps)
)(Input);
Is there any reason FormField
is not provided as an higher order component but instead one should pass a function as the first child?
from form.
It was previously. Technically you could easily create your own HOC that utilizes the current form component implementation under the hood. :)
from form.
Related Issues (20)
- [Docs] Guide page about getting and setting field values HOT 1
- [Docs] Guide about custom form controls HOT 2
- [Tracking] SSR & RSC Usage HOT 5
- [Docs] Guide about dynamic forms & nested fields HOT 1
- [Docs] “Fix” the framework dropdown HOT 1
- [Docs] Update the page title HOT 2
- If validation fails in `onSubmitAsync`, error does not resolve with a valid input HOT 3
- formAPI's onChange not called HOT 1
- onChange and onBlur validation errors should prevent submission of form HOT 9
- Rename Validators to Avoid DOM Event Confusion HOT 2
- Add docs and tests for Field Arrays HOT 5
- FormApi.reset seems to break a form HOT 7
- Unmounting a field does not update the form HOT 1
- Caching Primitives HOT 1
- Mark internal methods as internal HOT 2
- deleteField does not work inside if field is inside an array
- Add tests for getBy, setBy and deleteBy
- Svelte support
- validateAllFields isn't working with touched fields HOT 5
- "A component is changing a controlled input to be uncontrolled" in Next.js App router HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from form.