Redux-form v6 isDirty(和 isPristine)选择器不会在状态更改时触发重新渲染
Redux-form v6 isDirty (and isPristine) selector not triggering re-render on state change
我正在尝试从父组件检测表单状态是否脏,因此我只能在表单值已更改时显示提交按钮..
初始渲染按预期显示 false,但更改值不会触发使用新值重新渲染..
import React from 'react'
import { isDirty } from 'redux-form'
import { connect } from 'react-redux'
<Parent>
{ props.isDirty ? <SubmitButton /> : null }
<Form {...etc} />
</Parent>
const mapStateToProps = state => ({
...
isDirty: isDirty('myForm')(state),
})
export default connect(mapStateToProps, null)(Parent)
控制台日志记录 props.isDirty
显示在 <Parent/>
的初始渲染中 isDirty
是错误的。但是,更改值不会触发使用新值重新呈现 <Parent/>
。
更新:
经过进一步调查,我认为这是一个错误:
const mapStateToProps = (state) => {
console.log(isDirty('myForm')(state)
return {
...
isDirty: isDirty('myForm')(state),
}
此处,更改表单值会按预期触发 mapStateToProps
,但 isDirty
始终为 false。
呸!不是错误。我导入了错误的可变 isDirty
选择器..
import { isDirty } from 'redux-form/immutable'
..解决了问题
我正在尝试从父组件检测表单状态是否脏,因此我只能在表单值已更改时显示提交按钮..
初始渲染按预期显示 false,但更改值不会触发使用新值重新渲染..
import React from 'react'
import { isDirty } from 'redux-form'
import { connect } from 'react-redux'
<Parent>
{ props.isDirty ? <SubmitButton /> : null }
<Form {...etc} />
</Parent>
const mapStateToProps = state => ({
...
isDirty: isDirty('myForm')(state),
})
export default connect(mapStateToProps, null)(Parent)
控制台日志记录 props.isDirty
显示在 <Parent/>
的初始渲染中 isDirty
是错误的。但是,更改值不会触发使用新值重新呈现 <Parent/>
。
更新:
经过进一步调查,我认为这是一个错误:
const mapStateToProps = (state) => {
console.log(isDirty('myForm')(state)
return {
...
isDirty: isDirty('myForm')(state),
}
此处,更改表单值会按预期触发 mapStateToProps
,但 isDirty
始终为 false。
呸!不是错误。我导入了错误的可变 isDirty
选择器..
import { isDirty } from 'redux-form/immutable'
..解决了问题