umi 学习笔记
跟着千峰视频学习umi相关内容的一些笔记,第一次发,有点乱
1、umi会根据pages目录自动生成路由配置,但是需要注释umirc.js中routes相关,否则自动配置不生效
export default defineConfig({
nodeModulesTransform: {
type: 'none',
},
// routes: [
// { path: '/', component: '@/pages/index' },
// ],
fastRefresh: {}
}
);
2、[id].tsx实现动态路由
import React from 'react'
import { useParams } from 'umi'
interface IParams{
id:string
}
export default function Detail(props:any) {
const params=useParams<IParams>()
console.log(params.id)
return (
<div>
detail
</div>
)
}
3、嵌套路由文件路径要注意
4、路由拦截:用wrapper进行包装,创建一个父组件,没有token进行拦截
export default function Auth(props: any) {
const tokenStr = localStorage.getItem ('token')
console.log(tokenStr)
if(localStorage.getItem('token')){
return(
<div>
{props.children}
</div>
)
}
return <Redirect to="/login"/>
}
5、改成hash模式在umirc.js文件中
export default{
history:{type:'hash'}
}
6、利用mock模拟后端来编写接口,请求数据
export default {
namespace:"city",//命名空间
state:{
cityName:"北京",
cityId:"110100"
},
//同步
reducers:{
changeCity(prevState:any,action:any){
console.log(action)
return{
...prevState,
cityName:action.payload.cityName,
cityId:action.payload.cityId
}
}
}
}
7、dva集成
- 按目录约定注册model,无需手动app.model
- 文件名即namespace,可以省去model导出的namespace
key - 无需手写router.js,交给umi处理,支持model和component的按需加载
- 内置query-string处理,无需手动解码和编码
- 内置dva-loading和dva-immer,其中dva-immer需通过配置开启(简化reducer编写)