react白屏原因是什么

react白屏的原因是HtmlWebpackPlugin插件在引入bundle.js时,引入的是相对路径,其解决办法:1、在output配置中加入publicPath;2、在history模式下,将historyApiFallback设置为true即可。

react白屏原因是什么

本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。

react白屏原因是什么?

react history模式下的白屏问题

近期,再用react的时候,由于不想用丑陋的hash,便将路由模式切换成history了,结果带来了一些问题,比如刷新白屏,还有图片加载不出来,这里我们说一下解决方案。

原因

首先,我们说一下造成这一系列现象的原因。

我们在http://localhost:xxxx/这个路径下去刷新页面是没有问题的,一切都显得那么正常,但是当我们换到一个子模块,刷新就会白屏,为什么呢?

353ea4a47e8fb61cd46bd56143381ef.jpg

我们看到,它会从当前路径下去找bundle.js,为什么?因为HtmlWebpackPlugin插件在帮我们引入bundle.js时,引入的是相对路径

5e6ba5e82d93cd283517b24daf7a712.jpg

所以,在刷新时,它是相对于现在的url取寻找的。

解决方案

原因一旦清楚,解决方案便呼之欲出了。我们只要想办法让bundle.js的加载路径在刷新的时候,也从根目录开始寻找,而不是跟随当前url即可。

1.output配置加入publicPath

output: {    filename: 'assets/js/bundle.js',    path: path.resolve(__dirname, 'dist'),    publicPath: "/"}

登录后复制

publicPath是什么意思呢?官网中有这么一句话

webpack-dev-server 也会默认从 publicPath 为基准,使用它来决定在哪个目录下启用服务,来访问 webpack 输出的文件。

简单理解,你的静态资源,都会从此路径下开始加载

publicPath: “/”     //加载路径‘/assets/js/bundle.js’

这样,每次刷新都会从根目录开始加载,就不会丢失我们的bundle.js了。图片加载不出来也是这个问题。

2.webpack-dev-server的historyApiFallback

history模式下,devServer需要配置historyApiFallback为true

devServer: {historyApiFallback: true}

登录后复制

注意以上两点,history模式就能正常使用了。如果还有其他原因,欢迎大家补充。

ps:项目部署上服务器后,页面白屏,需要后台进行相关设置,这里不做讨论。

推荐学习:《react视频教程》

以上就是react白屏原因是什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2922333.html

(0)
上一篇 2025年3月11日 18:37:44
下一篇 2025年3月6日 03:28:55

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • react 表格怎么增加

    react表格增加的实现方法:1、在一个Table.jsx文件中创建两个class组件;2、在两个组件外面定义变量;3、创建点击新增的事件方法代码为“handleAdd = () => { const { data, editingK…

    2025年3月11日 编程技术
    200
  • react不能解析css怎么办

    react不能解析css是因为webpack配置“css/less”文件的loader时,默认不开启模块化或者是由于引入方法不对导致的,其解决办法:1、更改下webpack的loader配置;2、在“index.css”文件中通过“@imp…

    2025年3月11日 编程技术
    200
  • react创建元素的方法是什么

    react创建元素的方法:1、使用JSX语法创建React元素,其语法如“const element = Hello, world;”;2、通过“React.createElement(type,props,children)”语法创建Re…

    2025年3月11日
    200
  • react有哪些方法改变state

    react改变state的方法有:1、通过“this.setState({title:’React’});”方法修改state;2、通过“this.setState((preState, props)=>cou…

    2025年3月11日
    200
  • react怎么实现点击隐藏显示

    react实现点击隐藏显示的方法:1、使用style来显示隐藏,代码如“{{display:this.state.isShow?’block’:’none’}}”;2、使用三元运算符实现隐藏显…

    2025年3月11日
    200
  • react 属于什么框架

    react属于一种web前端开发框架;react是用于构建用户界面的JavaScript库,其特点有:1、简单,简单的表述任意时间点你的应用应该是什么样子;2、声明式,React是关于构造可重用组件的,实际上,使用React你做的仅仅是构建…

    2025年3月11日
    200
  • react中怎么用link跳转

    react中用link跳转的方式:1、通过Link跳转携带隐形参数,然后使用“this.props.location.query”拿到所传参数对象;2、通过Link跳转携带显性参数,然后使用“this.props.match.params.…

    2025年3月11日
    200
  • react的setstate什么时候同步

    react的setstate在原生事件和setTimeout中都是“同步”的,而在合成事件和钩子函数中是“异步”的;在React中,如果是由React引发的事件处理,调用setState不会同步更新“this.state”,除此之外的set…

    2025年3月11日
    200
  • react路由页面不刷新怎么办

    react路由页面不刷新的解决办法:1、在“index.js”文件中查看App组件是否被包裹在“”之中;2、在“”下的“”添加“exact”。 本教程操作环境:Windows10系统、react-router v5版、Dell G3电脑。 …

    2025年3月11日
    200
  • webstorm react 报错怎么办

    webstorm react报错的解决办法:1、查看webstorm编辑react语法报错提示;2、把JavaScript的版本设置为“JSX Harmony”;3、把“type”类型改为“text/jsx”即可。 本教程操作环境:Wind…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论