美文网首页javaScript让前端飞Web前端之路
react-实现一个简单的页面转跳路由

react-实现一个简单的页面转跳路由

作者: 反者道之动001 | 来源:发表于2019-05-30 12:32 被阅读43次

简单实现一个react-router

核心步骤如下:

  • 先把URL解析path出来
  • 然后匹配routes数组,找到path相同,返回出去即可
  • 这时候会有一个问题,页面没法更新数据,所以用onhashchange监听
  • 重新渲染
  • 提供执行钩子,也就是写路由文件的时候,页面设置成一个函数,然后方便执行到的时候,进行数据更新等处理

最终代码

const Main = (root: HTMLElement | null) => {
   let getPath = (url: string): string => {
      let href = url.split('#')[1]
      return href ? href.split('?')[0] : '/'
   }
   let getView = (urlPath: string) => {
      let pageInfo = routes.find((route: Troute) => route.path === urlPath)
      let pagePath = pageInfo ? pageInfo.path : ''
      return <div>
         {
            routes.map(e => {
               let view: ReactElement | Boolean
               if (e.path === pagePath) {
                  view = e.page()
               } else {
                  view = false
               }
               return view
            }).filter(e => e)
         }
      </div>
   }
   window.onhashchange = (e: HashChangeEvent) => {
      ReactDOM.render(getView(getPath(e.newURL)), root)
   }
   ReactDOM.render(getView(getPath(location.href)), root)
}

Main(
   document.getElementById('root')
)

类型

import { ReactElement } from 'react'
export interface Troute {
    path: string,
    page: () => ReactElement
}

具体代码查看我的项目【可视化布局 纯css布局 Layout-UI 】
GITHBU: https://github.com/0123cf/layout-ui
自动化可视化布局官网: http://layoutui.pro/

--END--

相关文章

网友评论

    本文标题:react-实现一个简单的页面转跳路由

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