Redux-Form V6 isDirty(和isPristine)选择器不会在状态更改时触发重新呈现 [英] Redux-form v6 isDirty (and isPristine) selector not triggering re-render on state change

查看:0
本文介绍了Redux-Form V6 isDirty(和isPristine)选择器不会在状态更改时触发重新呈现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试检测父组件中的表单状态是否已更改,以便只有在表单值已更改时才能显示提交按钮。

初始呈现如预期显示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。

推荐答案

Doh!不是虫子。我正在导入错误的、可变的isDirty选择器..

import { isDirty } from 'redux-form/immutable'

..解决了问题

这篇关于Redux-Form V6 isDirty(和isPristine)选择器不会在状态更改时触发重新呈现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆