美文网首页
每日面试一题

每日面试一题

作者: 背后山 | 来源:发表于2018-08-27 18:07 被阅读0次

router的底层实现

当url地址或者点击forword/back或者点击link时。以browserHistory(一种history类型:一个 history 知道如何去监听浏览器地址栏的变化, 并解析这个 URL 转化为 location 对象)为例 :

browserHistory进行路由state管理,主要通过sessionStorage

//保存 路由state(router state)

function saveState(key, state) {

  ...

  window.sessionStorage.setItem(createKey(key), JSON.stringify(state));

}

//读取路由state

function readState(key) {

  ...

  json = window.sessionStorage.getItem(createKey(key));

  return JSON.parse(json);

}

其中saveState函数传进来的state是个json对象,如:

{route: '/about'} ///假设此时的location为'/about'

进行路由匹配,最终渲染对应的组件

const About = React.createClass({/*...*/}) //About 组件

const Inbox = React.createClass({/*...*/}) //Inbox 组件

const Home = React.createClass({/*...*/}) //Home组件

render() {

    let Child

    switch (this.state.route) {

      case '/about': Child = About; break;

      case '/inbox': Child = Inbox; break;

      default:      Child = Home;

    }

    return (

      <div>

        <h1>App</h1>

        <ul>

          <li><a href="#/about">About</a></li>

          <li><a href="#/inbox">Inbox</a></li>

   

相关文章

  • 每日一题:Glide源码

    ****每日一题****: Glide glide图片缓存glide源码分享 面试率: ★★★☆☆ 面试技巧与建议...

  • 每日一题: Piscasso框架

    每日一题: Piscasso框架 GlideFrescoPicasso_1Picasso_2 面试率: ★★★☆☆...

  • 每日一题: Handler源码

    每日一题: Handler源码 深入了解handler 面试率: ★★★☆☆ 面试技巧与建议 handler作为A...

  • 每日一题:Volley源码问题分析

    每日一题:Volley源码问题分析 学习推荐_Volley源码解析 面试率: ★★★☆☆ 面试提醒 Volley是...

  • 每日一题:OkHttp

    每日一题:OkHttp OkHttp解析 面试率: ★★★☆☆ 面试技巧与建议 网络库在Android实际项目中基...

  • java 常用知识点链接

    java面试公众号每日一题 final , finally, finalize() 界面原型设计 Java 集合列...

  • 每日一题: MVP开发模式

    每日一题: MVP开发模式 面试率: ★★★★★ 面试提醒 在Android中MVP已经不算是什么新鲜东西了,记得...

  • 每日一题: 内存优化

    每日一题: 内存优化 内存泄漏检测MAT、DDMS 等内存查看工具 面试率: ★★★★☆ 面试提醒 内存优化?现在...

  • 每日一题: 线程面试题

    每日一题: 线程面试题 面试率: ★★★☆☆ 面试技巧与建议 线程是操作系统能够进行运算调度的最小单位,它被包含在...

  • 面试题系列

    jsonChao大佬系列面试题公众号面试题jsonChao腾讯面试题一天一道Android面试题「码个蛋」每日一题...

网友评论

      本文标题:每日面试一题

      本文链接:https://www.haomeiwen.com/subject/axmtwftx.html