Closed4
svgファイルをReactコンポーネントに変換する
svgrを使う。
"@svgr/webpack": "^6.2.1"
TypeScriptだと
によく似たSyntax errorが出た。
解決方法
.svgrrc.jsに記載してたtypescript: true
を止めて、ext: 'tsx'
のみにしたら直った。
module.exports = {
// typescript: true,
ext: 'tsx'
}
もしかしたら.svgrrc.js
自体要らないかも。
参照URL
やっぱり^6.2.1で、TypeScriptでNext.jsだと公式のドキュメントの設定だけでOK。.svgrrc.jsは要らない。
option https://react-svgr.com/docs/options/ は next.config.js に追記する
titleProp: true
で<Icon title="IconName" />
とかでtitleタグがsvgタグ内に挿入される。
けど、a11y的に不完全。
module.exports = {
webpack(config) {
config.module.rules.push({
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
use: {
loader: '@svgr/webpack',
options: {
titleProp: true
}
},
})
return config
}
}
module.exports = {
webpack(config) {
config.module.rules.push({
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
use: {
loader: '@svgr/webpack',
options: {
titleProp: true,
titleId: 'filePath'
}
},
})
return config
}
}
で、<Icon title="Icon Name" titleID="icon_id" />
とかするとidとaria-labelledby
も付与される
このスクラップは2022/04/16にクローズされました