Comments (7)
Can't reproduce. Its working fine.
from redux-form-material-ui.
@prawana-perera This is an issue with Material UI. The SelectField's onBlur
hooks don't seem to work properly, so there's no way to hook into Redux Form and tell it that the field has been touched.
from redux-form-material-ui.
@JeffreyATW Indeed
from redux-form-material-ui.
Thanks for your response. Yes, there are some open issues in material-ui around this. Closing issue.
from redux-form-material-ui.
@prawana-perera @JeffreyATW any workaround for this? Did you end up using another component? Or manually setting the touched field somehow?
from redux-form-material-ui.
Nope, still waiting for Material-UI "next" to be released.
from redux-form-material-ui.
I also ran into this today. A few possible workarounds:
-
Set touchOnChange to true. I believe the downside of this is that if any value in your form changes, the field will be marked as touched. You may not want that behavior.
-
Pass a custom onChange function that will be called (alongside the standard change dispatch) when the SelectField changes. This was added recently in P/R #50.
Solution:
class MyForm extends Component {
render() {
const { changeWithTouch } = this.props
return (
<Field name="mySelect" component={SelectField} onChange={(val) => changeWithTouch('mySelect', val, true /* touched prop */)}>
<MenuItem value="Option 1" primaryText="Option 1" />
</Field>
)
}
}
let MyForm = reduxForm({
form: 'myForm',
})(MyForm)
const changeWithTouch = (field, val, touch) => change('myForm', field, val, touch)
const mapDispatchToProps = (dispatch) => (bindActionCreators({ changeWithTouch }, dispatch))
MyForm = connect(undefined, mapDispatchToProps)(MyForm)
Unfortunately, the bound action creators passed to your redux-form do not allow for setting the touched property (see: https://github.com/erikras/redux-form/blob/ac3b6da74b6939f621b7e4c659eec0af451395d9/src/reduxForm.js#L526). You can only set it through the method described above. Ideally, we could do something like this:
class MyForm extends Component {
render() {
const { change } = this.props
return (
<Field name="mySelect" component={SelectField} onChange={(val) => change('mySelect', val, true /* touched prop */)}>
<MenuItem value="Option 1" primaryText="Option 1" />
</Field>
)
}
}
let MyForm = reduxForm({
form: 'myForm',
})(MyForm)
If @erikras thinks it's okay to allow the redux-form bound action creators to pass in a touch parameter that overrides the touchOnChange, then I'll submit a P/R in the redux-form repo.
Hope this helps @oturnermajor
from redux-form-material-ui.
Related Issues (20)
- Autocomplete doesn't show the specific text value
- IE - Checkbox keyboard interaction
- Custom Text Field (CurrencyInput)
- Dependency Problems. -Module not found, Toggle.JS HOT 3
- Autocomplete cause that you cannot use newest version of Material-ui HOT 7
- Typescript Support HOT 2
- not one of your examples actually work with material-ui HOT 1
- use v4 and v5 side-by-side
- Uncaught TypeError: Cannot read property '__reactInternalInstance$b8j8e0whlm' of null
- How can i change radio button icon color HOT 1
- Radio values not stored in Redux
- Select with Nested Lists not working
- Incompatible with Material UI v4 HOT 1
- Can update to support latest @material-ui version ? HOT 5
- Can't read property render of undefined and Can't resolve 'material-ui/AutoComplete' HOT 2
- Cannot type text in the Text field
- Failed prop type: Invalid prop `component` supplied to `Field`
- componentWillMount has been renamed, and is not recommended for use.
- New material-ui 4.6.1 HOT 1
- Is it maintained? HOT 1
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 redux-form-material-ui.