更改动作上的Redux-Form删除字段

时间:2018-10-25 19:12:40

标签: reactjs redux react-redux redux-form

我试图在Redux表单中保留一个字段,并对其派遣Redux Form的values CHANGE操作,以将该字段的值设置为空字符串('')。该字段深深地嵌套在表单内部。表单中字段的路径(称为campus)如下:

state.form.MY_FORM.values.assets[0].locations[1].location.campus

这是我要在此字段上分派的操作:

dispatch(change('MY_FORM', 'state.form.MY_FORM.values.assets[0].locations[1].location.campus', ''))

change对应于Redux-Form的CHANGE操作(用于更改字段值的操作)。

我的问题是,在分派上述操作时,Redux Form似乎正试图从该字段的状态中完全删除campus字段。

上一个状态,操作和下一个状态如下:

以前的状态 state.form.MY_FORM.values.assets[0].locations[1].location.campus: 'Some Campus' state.form.MY_FORM.values.assets[0].locations[1].location.building: 'Some Building'

action and action.payload

action: meta: field: "assets[0].locations[1].location.campus" form: "MY_FORM" persistentSubmitErrors: undefined touch: undefined payload: "" type: "@@redux-form/CHANGE"

下一个状态:

state.form.MY_FORM.values.assets[0].locations[1].location.building: 'Some Building'

如您所见,下一个状态完全没有campus字段。另外,CHANGE操作的有效载荷为"",所以我不确定为什么除了尝试像应该更新字段的值那样尝试做任何事情。

是否存在一个已知的Redux Form错误,如果该字段的值设置为空字符串,该bug会试图摆脱该字段?如果没有,那么关于可能导致这种情况的其他建议?

1 个答案:

答案 0 :(得分:0)

查看redux-form的{​​{3}}后,您会发现reducer检查payload操作的CHANGE是否为空字符串并删除商店中此字段的值

if (initial === undefined && payload === '') {
    result = deleteInWithCleanUp(result, `values.${field}`)
} 

值得一提的是,字段本身未被删除-您仍然可以在状态内的registeredFields对象中找到它。