TextField 在使用不同的 intialValues 重新渲染时没有得到更新
TextField is not getting updated on re-render with different intialValues
我正在使用 redux-form-material-ui 作为表格。我有两个文本字段的简单表单。此表单将显示传递给它的 initalValues
,用户还可以更新 TextField
的值。这些 TextField
可以很好地进行验证,但我在重新渲染时遇到了问题。在路由更改时,我将不同的 intialValues 传递给该表单组件,但即使传递给它的正确值,TextFields 也没有得到更新。它只显示第一次传递的 initialValues。
这是我的代码:
来自父组件:
<ReduxForm {...initialValues} />
ReduxForm 组件:
class ReduxForm extends React.Component {
render () {
return (
<div>
<form onSubmit={() => console.log('Submitted')} >
<Field
className='input-field'
name='name'
component={TextField}
floatingLabelText='Full Name'
/>
<Field
className='input-field'
name='email'
component={TextField}
floatingLabelText='Email'
/>
</form>
</div>
)
}
}
export default reduxForm({
form: 'test-form',
validate
})(ReduxForm)
我知道,这与 material-ui 的 TextField
中的 defaultValue
存在相同的问题。这也是 redux-form-material-ui 中的预期行为吗?如果是这样,有什么办法可以在不设置状态和所有设置的情况下解决这个问题?
谢谢!
没有使用 redux-form-material-ui 但尝试将 enableReinitialize: true
添加到你的 reduxForm
装饰器
export default reduxForm({
form: 'test-form',
validate,
enableReinitialize: true
})(ReduxForm);
看看是否可行。
我正在使用 redux-form-material-ui 作为表格。我有两个文本字段的简单表单。此表单将显示传递给它的 initalValues
,用户还可以更新 TextField
的值。这些 TextField
可以很好地进行验证,但我在重新渲染时遇到了问题。在路由更改时,我将不同的 intialValues 传递给该表单组件,但即使传递给它的正确值,TextFields 也没有得到更新。它只显示第一次传递的 initialValues。
这是我的代码:
来自父组件:
<ReduxForm {...initialValues} />
ReduxForm 组件:
class ReduxForm extends React.Component {
render () {
return (
<div>
<form onSubmit={() => console.log('Submitted')} >
<Field
className='input-field'
name='name'
component={TextField}
floatingLabelText='Full Name'
/>
<Field
className='input-field'
name='email'
component={TextField}
floatingLabelText='Email'
/>
</form>
</div>
)
}
}
export default reduxForm({
form: 'test-form',
validate
})(ReduxForm)
我知道,这与 material-ui 的 TextField
中的 defaultValue
存在相同的问题。这也是 redux-form-material-ui 中的预期行为吗?如果是这样,有什么办法可以在不设置状态和所有设置的情况下解决这个问题?
谢谢!
没有使用 redux-form-material-ui 但尝试将 enableReinitialize: true
添加到你的 reduxForm
装饰器
export default reduxForm({
form: 'test-form',
validate,
enableReinitialize: true
})(ReduxForm);
看看是否可行。