Nuxt.jsとMaterial Iconで、SPA時に文字化けする
2609 ワード
事象は表題の通り
Material Iconの実装は以下の方法です。
【IE対応】Google Material Iconsをdata 属性を使ってスマートに表示する
上記の手法、Nuxt.jsでSSRされたときは問題なく表示されますがSPA遷移行うとユニコードがそのまま文字列として展開されてしまいます。
回避方法
これを回避する方法は2パターン考えられます。
v-htmlを使う
どうやら仮想DOMから実際にHTMLを出力される際にユニコードを文字列としてエンコードして出しているように見えます。
v-html
ディレクティブを利用することでこれを回避できます。
<a href="~~~" v-html="icon"></a>
...
<script>
...
const icon = `<i class="material-icon" data-icon=""</i>お問い合わせ`
return { icon }
...
</script>
ユニコードをそのまま貼り付ける
出力されるHTMLに注目してみましょう。
正常に表示できているときはHTMLに通称豆腐として展開されています。
なので、vueテンプレート側でもこの豆腐で登録することでうまく表示できるのでは?ということで試してみたところ、うまく表示されました。
使っているアイコンをオブジェクトで管理することで「この豆腐なんだっけ?」も防げますね。とはいえスマートな解決とは言えないのでもっと良い解決方法が知りたいです。
Author And Source
この問題について(Nuxt.jsとMaterial Iconで、SPA時に文字化けする), 我々は、より多くの情報をここで見つけました https://qiita.com/kubotak/items/8db04886d43623cab3e7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .