问题描述
我在 React 中有一个国家/地区代码选择下拉列表。最近我才知道美国和加拿大有相同的国家代码。问题是每当我选择加拿大或美国时,总是会选择美国,因为它们都有一个共同的值“1”。我还必须从后端传递和接收这些数据,这也使这变得更加复杂。
前进的道路是什么?我可以把'1'写成'01'吗,它有效吗?
<option value="1">USA (+1)</option>
<option value="1">Canada (+1)</option>
解决方法
您可能不止一次遇到这种情况:例如,哈萨克斯坦和俄罗斯都使用 +7(there may be others,但我不确定)。
我建议改为在服务器上保留这些映射,并将 React 应用程序中的值设置为 ISO 3166-1 alpha-2 country codes,或者真正使用您希望保存在服务器上的任何唯一国家/地区 ID。然后,您可以将此代码或 ID 设置为 value
,并在您提交表单时让服务器确定调用代码是什么。
这按设计工作。您可以根据推测使用不同的值。您还可以删除 value 属性,在这种情况下,文本将被传递到服务器,即 USA (+1)
。当您对文本中的国家/地区和前缀进行编码时,您可以提取它,或者在服务器端使用合适的映射将文本映射到国家/地区和前缀。