【发布时间】:2019-06-06 08:43:21
【问题描述】:
请参阅 react final form 的文档here
我正在研究一个显然由 react final 形式提供支持的表单。在表单组件中,我从 API 服务器获取数据,响应正文包括以下内容:
{
"configs": {
"name": "abc",
"display.name": "Abc",
"value": 12,
"read.only": true
}
}
我们可以看到configs 中有四个不同的键/值对。 react final 形式可以显示 name 和 value 之类的值,但不能显示 display.name 和 read.only 之类的值,因为它们的键中有一个点 -> .。
我知道我可以用下划线之类的东西更改这些点 (.),它会起作用。但问题是我们的后端开发人员说使用点 (.) 来分隔键名在后端非常常见,因此无法选择用其他分隔符替换点。
我目前正在前端用下划线替换这些分隔符,但这种逻辑无处不在,我认为应该有更好的方法来解决这个问题。谢谢!
【问题讨论】:
-
访问带点的键会出现
Uncaught TypeError: Cannot read property of undefined之类的错误,但您可以访问带点的键,例如obj.configs['display.name']和obj.configs['read.only']。 -
.是一个特殊字符,不仅在最终形式中,而且在角形式中,它用于获取或设置嵌套字段。除了转义这个值之外,除了不使用最终形式之外没有其他选择,因为整个 api 都围绕着点是特殊的概念。我唯一能建议的就是编写一个可靠的辅助方法。 -
感谢@AvinKavish 的评论!是的,我们现在正在使用辅助方法将点替换为下划线。只是想知道是否有更好的解决方案。
标签: javascript reactjs react-final-form final-form