React页面刷新样式丢失问题及解决方案

我们把路由都变成二级路由,统一加上/dean/路由前缀
React页面刷新样式丢失问题及解决方案_第1张图片
效果:
React页面刷新样式丢失问题及解决方案_第2张图片
React页面刷新样式丢失问题及解决方案_第3张图片
React页面刷新样式丢失问题及解决方案_第4张图片
看着没什么问题,但是一旦刷新页面,样式就废了:
React页面刷新样式丢失问题及解决方案_第5张图片

我们把路由恢复,看看bootstrap网络请求正常不正常:
React页面刷新样式丢失问题及解决方案_第6张图片

我们发现bootstrap请求地址是http://localhost:3000/css/bootstrap.css,localhost:3000是本地服务器,webpack里面的webServer配置了public这个文件夹都是localhost:3000/根目录对应的位置

我们通过地址请求看看:
React页面刷新样式丢失问题及解决方案_第7张图片
React页面刷新样式丢失问题及解决方案_第8张图片
React页面刷新样式丢失问题及解决方案_第9张图片

如果请求了一个不存在的资源,那么脚手架会默认把index.html返回

我们再把路由改回去到二级路由的状态:
React页面刷新样式丢失问题及解决方案_第10张图片

我们再测试一遍,刷新页面的时候,按住shift强制刷新,看看网络请求:
React页面刷新样式丢失问题及解决方案_第11张图片
React页面刷新样式丢失问题及解决方案_第12张图片
所以,在多级路由中刷新,会丢失样式

解决方法:

1.把.删了:
React页面刷新样式丢失问题及解决方案_第13张图片

./css/bootstrap.css表示以当前所在路径为基准,去找/css/bootstrap.css,访问http://localhost:3000/dean/home的时候, 就去./dean/css去找bootstrap.css,肯定没有
去掉点. 改成/css/bootstrap.css,表示基于public文件夹

方法二:
把.改为%PUBLIC_URL%,指的就是public目录,相当于写死了
React页面刷新样式丢失问题及解决方案_第14张图片
方法三:
就想用点. 的话, 就把路由换为hash方式:
React页面刷新样式丢失问题及解决方案_第15张图片
React页面刷新样式丢失问题及解决方案_第16张图片
因为hash路由这个模式下,#右侧的后不会带入查询

总结

React页面刷新样式丢失问题及解决方案_第17张图片

你可能感兴趣的:(react,react)