知识点
Object.assign()会过滤掉后面的与第一个参数全等的参数。
const a = { name: 'a' };
const b = { name: 'b' }
Object.assign(a, b);
// {name: 'b'}
const a = { name: 'a' };
const b = { name: 'b' }
Object.assign(a, b, a);
// {name: 'b'}
const a = { name: 'a' };
const b = { name: 'b' }
Object.assign(a, b, { ...a });
// {name: 'a'}
相当于 Object.assign(a, b, c)。
-
css动画,进行一半被隐藏(
display: none)后,再次展示时,动画会重新开始。 -
使用正则表达式格式化金额(千分位使用
,分隔)。
'123456789.00'.replace(/(?<!^)(?=(\d{3})+\.)/g, ',');
- 将这个正则表达式分为两部分:
(?<!^)和(?=(\d{3})+\.); (?<!^)这是一个负向零宽后行断言(?<!exp),表示目标字符出现的位置的前边不能是符合exp表达式的,即不能符合^,也就是后面这部分(?=(\d{3})+\.)匹配到的结果不能是从开头(^)开始的。(?=(\d{3})+\.))这是一个正向零宽先行断言(?=exp),表示目标字符出现的位置的后边必须匹配这个exp,即匹配到的位置后边必须符合(\d{3})+\.;(\d{3})+\.该表达式可以匹配789.和456789.和123456789.,正向零宽先行断言匹配的是它们前面的位置,由于不能是从开头开始,所以只匹配到789.和456789.前面的位置。- 将这些匹配到的位置替换为
,。
补充
- 金额数字不一定包含小数点。
'123456789'.replace(/(?<!^)(?=(\d{3})+(\.|\b))/g, ',');
(?<!^)要求前边不能是开头,也可以换成前面必须是数字(?<=\d)
业务总结
- 在下一次请求返回之前保持当前页面状态(上一次请求数据)。
- 请求前,将当前页面状态(
curState)赋给一个变量prevState; - 请求后,将数据重新赋给
curState,并将prevState清空; - 页面展示的状态为
prevState || curState,使用计算属性。
- 请求前,将当前页面状态(