当前位置: 首页 > news >正文

Umi、React框架学习笔记

一、Css样式隔离

  • Umi脚手架自带Less+Css Modules 实现样式隔离。
  • 原理:基于less中的className生成唯一Hash串。
  • 类似Scoped,一个基于标签(v-xx),一个基于className。
  • 推荐写法
// less
.wrap-box {
  background: pink;
  .cont-text-box{
    border:1px solid #ccc;
    padding: 4px;
    .cont-text{
      font-size: 16px;
      color: #2b2b2b;
    }
  }
}

// Component
import styles from './index.less';
export default function TestCompoent() {
  return (
    <div className={styles['wrap-box']}>
      <div className={styles['cont-text-box']}>
        <div className={styles['cont-text']}>这是一段描述文字!</div>
      </div>
    </div>
  );
}

原理

{
 "wrap-box":"wrap-box___3XsTJ",
 "cont-text-box":"cont-text-box___2ScBT",
 "cont-text":"cont-text___3comu
}

二、路由配置

  • 官方路由配置文档
  • 路由配置文件 => /.umirc.ts,可以抽离为单独配置文件。
  • 类似VueRouter配置方式,避免频繁操作ReactRouterDom。
// 配置案例
[
  { exact: true, path: '/index', component: './Index/index' },
  {
    path: '/user',
    component: './User/index',
    routes: [{ path: '/user/detail', component: './UserDetail/index' }],
  },
  { exact: true, path: '/', redirect: '/index' },
]
  • component参数为字符串,Umi会做自动导入。
    • exact 严格匹配
    • routes 子路由
    • redirect 重定向
  • wrappers 可以结合hooks实现路由拦截。

三、子路由配置

  • 子路配置与VueRouter相同,通过将子路由组件注入到当前组件的props.children实现。
  • 官方推荐使用layout组件控制路由渲染,也可以采用类似router-view的方式。
  • 通过注入的props.route可以获得当前的路由信息。
  • 注意子路由也为’路径全匹配’,上级路由不可省略,如案例中的’/user’。
    案例
// 子路由渲染案例
import styles from './index.less';
export default function TestCompoent(props: any) {
  return (
    <div className={styles['wrap-box']}>
      <div className={styles['cont-text-box']}>
        <div className={styles['cont-text']}>这是一段描述文字!</div>
      </div>
      {/* 子路由渲染 */}
      <div className={styles['router-view-box']}>{props.children}</div>
    </div>
  );
}
 

相关文章:

  • 测试开发 | 专项测试技术初识Hook
  • python2和python3环境安装
  • 目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
  • 02.指针的进阶
  • windows下Docker部署Flask的教程
  • 【博客589】K8s Topology Spread Constraints
  • 四、template模板
  • 【Java|golang】1813. 句子相似性 III
  • 在linux安装redis
  • 使用react-bmapgl绘制区域并判断是否重叠
  • 总结 62 种在深度学习中的数据增强方式
  • 【BP靶场portswigger-客户端14】点击劫持-5个实验(全)
  • linux备份压缩
  • Keil中 Program Size
  • 初步学习MOOS-ivp
  • 【Chrome谷歌浏览器——帮助如何设置无头浏览器】
  • 【状态设计优化DP】Atcoder Beginner Contest E - Work or Rest
  • Java的长整型Long/long后面的数字什么情况下必须加L?
  • Elasticsearch入门——kibanna和postman操作Elasticsearch索引示例
  • 【JavaEE】基于TCP的客户端服务器程序