javascript - 服务器和客户端类名不匹配
问题描述
所以我使用 webpack 和 css-loader 和 localIndentName 来在服务器端渲染我的应用程序。我正在使用 css 模块为特定组件导入 css。现在的问题是,在组件中导入样式时,服务器正在本地键中返回 css 映射对象,因此服务器无法找到 styles.className 而在客户端一切正常。
这是我为服务器和客户端编辑的规则配置
{
test: /\.css$/,
use: [
{
loader: 'css-loader',
options: {
modules: true,
localIdentName: '[local]__[hash:base64:4],
camelCase: true
}
}
],
}
当我控制台记录任何导入的样式时,这是服务器服务器正在获取
[ [ 107,
'',
'' ],
toString: [Function],
i: [Function],
locals: { 'class-name': 'class-name__3WnY' } ]
这就是我的客户所抱怨的
Warning: Prop `className` did not match. Server: "" Client: "class-name__3WnY"
为什么会有这样的行为?
解决方案
该错误是由服务器端不正确的加载程序引起的。
在服务器端,我们应该使用
loader: 'css-loader/locals',
在客户端,我们应该使用
loader: 'css-loader',
有关完整的 webpack 配置,请查看我之前制作的这个答案。希望能帮助到你。
推荐阅读
- excel - 我的 VBA IF 语句生成编译错误
- php - Laravel 路线 - 即使它不应该能够找到一个帖子的实例
- leaflet - 传单/ mapquest 地图和表格
- python - 列中的计数列表 - Pandas
- c - DPDK 20.11 - IPv4 Fragmentation - 间接池耗尽
- python - Pandas DataFrame - 添加缺失月份的行
- python - 如何在python中生成具有特定均值和标准的对数正态分布?
- node.js - 如何更改 Jenkins 中使用的节点版本
- javascript - 反应如何通过单击更改我的组件
- python - 通过 Pandas 在 Python 中将 Excel 文件作为数组读取