React Native 中的开关案例
Switch Cases in React Native
大家好,我正在尝试使用 switch case 在用户从列表中选择文本后更新文本。我对本机反应不是很熟悉,所以不确定我是否遗漏了一些简单的东西。我很感激 help/feedback。如果我可以提供任何额外信息,请告诉我。谢谢!
<ProfilePropertyInfoCompact
style={{ marginBottom: 17 }}
fieldName={translations['edituserprofile.size']}
value={userSize ? userSize : translations['unknown']}
onPress={() => {
setModalData({
options: [
translations['xx-small.weight'],
translations['x-small.weight'],
translations['small.weight'],
translations['medium.weight'],
translations['large.weight'],
translations['x-large.weight'],
translations['xx-large.weight'],
translations['xxx-large.weight'],
],
fieldName: translations['edituserprofile.size'],
modalTitle: translations['edituserprofile.size'],
selected: userSize,
onModalSelect: (item) => {
switch (item) {
case translations['xx-small.weight']:
return translations['xx-small'];
case translations['x-small.weight']:
return translations['x-small'];
case translations['small.weight']:
return translations['small'];
case translations['medium.weight']:
return translations['medium'];
case translations['lalrge.weight']:
return translations['large'];
case translations['x-large.weight']:
return translations['x-large'];
case translations['xx-large.weight']:
return translations['xx-large'];
case translations['xxx-large.weight']:
return translations['xxx-large'];
default:
'';
}
setuserSize(item);
setIsModalOpen(false);
},
});
setIsModalOpen(true);
}}
/>
我发现 switch 语句阻止了项目被 setuserSize
设置。为了解决这个问题,我创建了一个函数并使 item
等于函数并传入 item
.
const sizeTranslationMap = (weightRange) => {
switch (weightRange) {
case translations['xx-smallweight']:
return translations['xx-small'];
case translations['x-smallweight']:
return translations['x-small'];
case translations['smallweight']:
return translations['small'];
case translations['mediumweight']:
return translations['medium'];
case translations['largeweight']:
return translations['large'];
case translations['x-largeweight']:
return translations['x-large'];
case translations['xx-largeweight']:
return translations['xx-large'];
case translations['xxx-largeweight']:
return translations['xxx-large'];
default:
return '';
}
};
onModalSelect: (item) => {
item = sizeTranslationMap(item);
setuserSize(item);
setIsModalOpen(false);
},
大家好,我正在尝试使用 switch case 在用户从列表中选择文本后更新文本。我对本机反应不是很熟悉,所以不确定我是否遗漏了一些简单的东西。我很感激 help/feedback。如果我可以提供任何额外信息,请告诉我。谢谢!
<ProfilePropertyInfoCompact
style={{ marginBottom: 17 }}
fieldName={translations['edituserprofile.size']}
value={userSize ? userSize : translations['unknown']}
onPress={() => {
setModalData({
options: [
translations['xx-small.weight'],
translations['x-small.weight'],
translations['small.weight'],
translations['medium.weight'],
translations['large.weight'],
translations['x-large.weight'],
translations['xx-large.weight'],
translations['xxx-large.weight'],
],
fieldName: translations['edituserprofile.size'],
modalTitle: translations['edituserprofile.size'],
selected: userSize,
onModalSelect: (item) => {
switch (item) {
case translations['xx-small.weight']:
return translations['xx-small'];
case translations['x-small.weight']:
return translations['x-small'];
case translations['small.weight']:
return translations['small'];
case translations['medium.weight']:
return translations['medium'];
case translations['lalrge.weight']:
return translations['large'];
case translations['x-large.weight']:
return translations['x-large'];
case translations['xx-large.weight']:
return translations['xx-large'];
case translations['xxx-large.weight']:
return translations['xxx-large'];
default:
'';
}
setuserSize(item);
setIsModalOpen(false);
},
});
setIsModalOpen(true);
}}
/>
我发现 switch 语句阻止了项目被 setuserSize
设置。为了解决这个问题,我创建了一个函数并使 item
等于函数并传入 item
.
const sizeTranslationMap = (weightRange) => {
switch (weightRange) {
case translations['xx-smallweight']:
return translations['xx-small'];
case translations['x-smallweight']:
return translations['x-small'];
case translations['smallweight']:
return translations['small'];
case translations['mediumweight']:
return translations['medium'];
case translations['largeweight']:
return translations['large'];
case translations['x-largeweight']:
return translations['x-large'];
case translations['xx-largeweight']:
return translations['xx-large'];
case translations['xxx-largeweight']:
return translations['xxx-large'];
default:
return '';
}
};
onModalSelect: (item) => {
item = sizeTranslationMap(item);
setuserSize(item);
setIsModalOpen(false);
},