我在redux-form工作,我有一个编辑社会安全号码字段。我希望能够将还原形式的SSN存储为'999-99-9999',但我需要UI输入才能显示 * - -9999。用户也应该能够编辑隐藏的数字。关于我的代码没有什么比这更复杂,但我会包含相关的代码片段:
const formatSSN = value => {
if (!value) { return value; }
const nums = value.toString().replace(/[^\d]/g, '');
const len = nums.length;
if (len < 4) {
return nums;
} else if (4 <= len <= 5) {
return `***-${nums.slice(3)}`;
} else if (len > 5) {
return `***-**-${nums.slice(5)}`;
}
};
const parseSSN = value => {
const nums = value.replace(/[^\d]/g, '');
const len = nums.length;
if (len < 4) {
return nums;
} else if (4 <= len <= 5) {
return `${nums.slice(0, 3)}-${nums.slice(3)}`;
} else if (len > 5) {
return `${nums.slice(0, 3)}-${nums.slice(3, 5)}-${nums.slice(5)}`;
}
};
我想知道我是否应该使用normalize函数来返回某种prevValue和value的混合?任何建议都将在这里受到赞赏,我对图书馆开放。