我有一个来自服务器的响应,结构如下:
{
is_separate_page: true,
is_blank_page: true,
is_instructions_page: false,
is_letter_paper: true,
is_pressure_seal_paper: false,
is_mask_ssn_on_letter_paper: true,
is_mask_ssn_on_pressure_seal_paper: true,
is_pdf_encrypted_on_letter_paper: false,
is_pdf_encrypted_on_pressure_seal_paper: true
}然后,我使用以下助手函数将值转换为camel case语法,以将其存储在function组件状态中:
// Destructuring approach
transformInitialCheckboxesState = data => {
const {
is_show_mask_ssn_field: isShowMaskSSNField,
is_separate_page: isSeparatePage,
is_blank_page: isBlankPage,
is_instructions_page: isInstructionsPage,
is_letter_paper: isLetterPaper,
is_pressure_seal_paper: isPressureSealPaper,
is_mask_ssn_on_letter_paper: isMaskSSNonLetterPaper,
is_mask_ssn_on_pressure_seal_paper: isMaskSSNonPressureSealPaper,
is_pdf_encrypted_on_letter_paper: isPDFEncryptedOnLetterPaper,
is_pdf_encrypted_on_pressure_seal_paper: isPDFEncryptedOnPressureSealPaper,
} = data
return {
isShowMaskSSNField,
isSeparatePage,
isBlankPage,
isInstructionsPage,
isLetterPaper,
isPressureSealPaper,
isMaskSSNonLetterPaper,
isMaskSSNonPressureSealPaper,
isPDFEncryptedOnLetterPaper,
isPDFEncryptedOnPressureSealPaper,
}
}对于提交值,我应该执行相反的操作,以便根据后端的需要准备密钥:
preparePayloadCheckboxesState = data => {
const {
isShowMaskSSNField: is_show_mask_ssn_field,
isSeparatePage: is_separate_page,
isBlankPage: is_blank_page,
isInstructionsPage: is_instructions_page,
isLetterPaper: is_letter_paper,
isPressureSealPaper: is_pressure_seal_paper,
isMaskSSNonLetterPaper: is_mask_ssn_on_letter_paper,
isMaskSSNonPressureSealPaper: is_mask_ssn_on_pressure_seal_paper,
isPDFEncryptedOnLetterPaper: is_pdf_encrypted_on_letter_paper,
isPDFEncryptedOnPressureSealPaper: is_pdf_encrypted_on_pressure_seal_paper,
} = data
return {
is_show_mask_ssn_field,
is_separate_page,
is_blank_page,
is_instructions_page,
is_letter_paper,
is_pressure_seal_paper,
is_mask_ssn_on_letter_paper,
is_mask_ssn_on_pressure_seal_paper,
is_pdf_encrypted_on_letter_paper,
is_pdf_encrypted_on_pressure_seal_paper,
}
}问题是:在我的观点上,它看起来非常相似和可重复,在您的观点上减少这段代码的最好和最优雅的方法是什么?
发布于 2019-07-23 16:39:04
您可以创建映射对象和转换函数:
const mapping = {
"is_show_mask_ssn_field" : "isShowMaskSSNField",
"is_separate_page": "isSeparatePage",
... other properties
}
const fromServer = (data) => {
let obj = {};
for (var prop in data) {
var realName = mapping[prop];
if (realName) {
obj[realName] = data[prop];
}
}
return obj;
}
const toServer = (data) => {
let obj = {};
for (var serverName in mapping) {
var realName = mapping[serverName];
if (data.hasOwnProperty(realName)) {
obj[serverName] = data[realName];
}
}
return obj;
}因此,在将数据发送到服务器之前,只需从端点接收数据并调用模型上的fromServer和toServer即可。
https://stackoverflow.com/questions/57168365
复制相似问题