我试图在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会试图摆脱该字段?如果没有,那么关于可能导致这种情况的其他建议?
答案 0 :(得分:0)
查看redux-form
的{{3}}后,您会发现reducer检查payload
操作的CHANGE
是否为空字符串并删除商店中此字段的值:
if (initial === undefined && payload === '') {
result = deleteInWithCleanUp(result, `values.${field}`)
}
值得一提的是,字段本身未被删除-您仍然可以在状态内的registeredFields
对象中找到它。