reactjs - 如何使用 2 个相同的值处理材质 ui 的选择
问题描述
我正在尝试实现一个功能,用户可以在其中输入他的电话号码和他的国家代码。我正在使用 material-ui 的 Select 组件作为国家代码的下拉菜单,以便用户可以从下拉菜单中选择他的国家代码。问题是usa
&canada
具有相同的国家代码,即+1
。我也在使用一个 npm 包显示相应的国家标志。这是我的代码:-
const checkCountryFlag = (code) => {
switch (code) {
case "+91":
return "inr";
case "+1":
return "usd";
case "+44":
return "gbp";
case "+971":
return "aed";
case "+1-c":
return "cad";
}
};
<Select
value={countryCode}
label="Country code"
onChange={(e) => setCountryCode(e.target.value)}
renderValue={() => (
<div style={{ padding: "10px" }}>
<div
class={`currency-flag currency-flag-${checkCountryFlag(
countryCode
)}`}
style={{ paddingRight: "5px" }}
></div>
<span style={{ paddingLeft: "20px" }}>{countryCode}</span>
</div>
)}
>
<MenuItem value={`+91`}>
<div class={`currency-flag currency-flag-inr`}></div>
+91
</MenuItem>
<MenuItem value={`+1`}>
<div class={`currency-flag currency-flag-usd`}></div>
+1
</MenuItem>
<MenuItem value={`+44`}>
<div class={`currency-flag currency-flag-gbp`}></div>
+44
</MenuItem>
<MenuItem value={`+971`}>
<div class={`currency-flag currency-flag-aed`}></div>
+971
</MenuItem>
<MenuItem value={`+1`}>
<div class={`currency-flag currency-flag-cad`}></div>
+1
</MenuItem>
</Select>
正如你在上面看到的......加拿大和美国有相同的国家代码,所以无论我选择美国还是加拿大,我的开关盒都会返回usa
。
我试图value
在代表加拿大的 MenuItem 中为 prop 赋予不同的值,即'+1-c'
然后选择我的 Select 节目+1-c
,这很明显。
我还尝试像这样检查选择组件的值属性:-
<Select
value={countryCode !== "+1-c" ? countryCode : "+1"}
label="Country code"
onChange={(e) => setCountryCode(e.target.value)}
renderValue={() => (
<div style={{ padding: "10px" }}>
<div
class={`currency-flag currency-flag-${checkCountryFlag(
countryCode
)}`}
style={{ paddingRight: "5px" }}
></div>
<span style={{ paddingLeft: "20px" }}>
{countryCode !== "+1-c" ? countryCode : "+1"}
</span>
</div>
)}
>
<MenuItem.....
</Select>
在这种情况下...当我选择加拿大时...然后我无法再次选择美国
任何关于我如何实现这一目标的建议
解决方案
一种可能的解决方案是,不要将国家代码设置为值,仅设置国家名称。
并在选择后,从所选国家中提取国家代码。
例如。
如果用户选择加拿大。您只需将加拿大设置为州,并从查找功能中获取加拿大的国家代码。
[{name: "Canada", code: "+1"}, {name: "USA", code: "+1"}].find(c => c.name === selectedCountryName).code
推荐阅读
- kubernetes - 如何防止用户创建带有特定标签的 pod?
- machine-learning - 将 Keras 转换为 Pytorch
- php - 如何在 Virtuemart 结帐中禁用收货方和计费信息
- python - 为函数返回 nan 数组但仅适用于某些实例?
- authy - Authy 是否支持接受 1 个令牌返回和 1 个令牌转发?
- python - 在嵌套 for 循环中枚举外部增量的列表理解
- hibernate - 有谁知道如何更改 Grails 4.x 中的默认“级联”行为?
- css - 如何使用样式化组件将样式从子级传递给父级
- ios - 斯威夫特 UITableViewCell
- angular - 如何解决大量的 npm 安装错误?