react-router没有自动更新组件的问题

今天碰到了如题的问题,最后排查出是包裹<Route />组件的外层<App>组件,添加了mobx的observer修饰器导致的。
总之去掉就恢复正常了,具体原因仍未排查出。程序员的第六感告诉我,可能和React的context,或者observer修饰器修饰过之后context被覆盖有关系。
发表在 react | 留下评论

fetch自动先发起option请求的问题

以前有些fetch在发起post请求之前总会先发一个option,等服务器返回头allow-methods里有post才会再发真正的post请求。没仔细研究还以为是post的特殊行为。最近遇到了get请求竟然也会先发option请求,但服务器没有正确返回头信息,导致请求中断。

仔细研究了一下以前不会先发起option请求区别发现在于只要有自定义的header放到fetch的option里,就一定会先试探发起一个option请求,不管是get还是post或其他什么请求方法。

发表在 ecmascript | 留下评论

数据到底应该前端还是后端处理

上家公司的后端同学,几乎是不会将数据做任何处理,大多数接口都是直接就是把数据库中的数据以数组形式输出,前端需要的、不需要的属性全有。以后端人员的思维就是,反正数据是给你了,你想怎么处理都行。前端处理业务逻辑多不说,还导致大量接口数据浪费和冗余。

现在公司的后端能力强,也容易沟通,常常是前端需要什么数据结构,就可以直接输出什么数据结构。

但个人认为数据要前端还是后端处理,得看具体情况。

例如树状菜单的输出。前端需要树状数据结构,如果要后端输出,可能这个接口需要多次数据库命中,或者后端一次性将数据拿出然后进行递归操作整理成树形结构。这种情况下,我认为后端接口还是直接输出数组方式较好。将计算任务前端化可以极大的减轻后端服务器内存与运算压力,等于是将运算分布到每个客户端上执行。如果是一些仅仅需要个总数计算的情况,就最好后端计算后直接输出数字比较好了,否则输出一大堆复杂结构的数组,前端也仅仅是计算一下数组的长度,太浪费带宽。

发表在 ecmascript | 留下评论