react diff原理
比较:先把树形结构按层级分解,给列表结构的每个单元添加key,只比较同级元素;
合并:调用component的setState时,React将其标记为dirty,当每个事件循环结束,React检查所有标记为dirty的component重新渲染。
** react class组件和function组件的区别**
function定义的组件没有this指向的问题;
class定义的组件有自己的局部状态(this.state)和自己的生命周期函数,function定义的组件是无状态组件,但是在16.8之后可以用hooks(useEffect)来模拟组件的局部状态和生命周期;
React Vue区别
react:React 的思路是 HTML in JavaScript 也可以说是 All in JavaScript,通过 JavaScript 来生成 HTML,所以设计了 JSX 语法,还有通过 JS 来操作 CSS,社区的styled-component、JSS等
vue:Vue 是把 HTML,CSS,JavaScript 组合到一起,用各自的处理方式,Vue 有单文件组件,可以把 HTML、CSS、JS 写到一个文件中,HTML 提供了模板引擎来处理。React 整体是函数式的思想,在 React 中是单向数据流,推崇结合 immutable 来实现数据不可变。而 Vue 的思想是响应式的,也就是基于是数据可变的,通过对每一个属性建立 Watcher 来监听,当属性变化的时候,响应式的更新对应的虚拟 DOM。
Redux中间件原理
*useState setState 同步还是异步
Fiber 深入了解Fiber
react事件机制
DOM事件和react事件
reselect是什么
react 长列表解决方案
长列表解决方案
单点登录
普通登录认证机制:我们在浏览器(Browser)中访问一个应用时,这个应用需要登录,我们填写完用户名和密码后,完成登录认证。此时,我们在这个用户的seesion中标记登录状态为yes(已登录),同时,在浏览器(Browser)中写入cookie,这个cookies是用户的唯一标识。下次我们再访问这个应用的时候,请求中会带上这个Cookie,服务端会根据这个Cookie找到对应的session,通过session来判断这个用户是否登录。如果不做特殊配置,这个Cookie的名字叫做jsessionid,值在服务端(server)是唯一的。
–SSO 同域名下单点登录
问题:cookie不能跨域 不同域名cookie对应的session不一样
解决:将cookie设置为顶域,这样所有子域的系统都可以访问到顶域的Cookie;把子系统的session共享。
–CAS 不同域名下单点登录
简单来说就是 发现没有登录跳到登录页然后登录 将seesion登录状态标记到浏览器再将cookie写入,跳到触发登录到页面携带一个ST(Service Ticket),原来页面拿到ST之后请求后台验证ST是否有效,验证通过后将登录状态写入session并设置Cookie。