Alpine.js: x-bind:classがクラスを削除する
Alpine.jsでx-bind:classを使用した際に意図しないクラス削除が発生する問題
概要
Alpine.jsのx-bind:classで複数の条件付きクラスを設定する際、同じクラスが複数の条件に含まれていると、falseの条件によってクラスが削除されてしまう問題です。
エラーメッセージ
エラーメッセージは表示されませんが、期待したクラスが適用されない現象が発生します。
| |
原因
- クラスの上書き処理: Alpine.jsはオブジェクトのキーを順番に処理し、後の条件がfalseの場合、そのキーに含まれるクラスを削除する
- 複数キーでの同一クラス: 同じクラスが複数のキーに存在すると、最後に評価された条件が優先される
- オブジェクトの評価順序: JavaScriptオブジェクトのキー順序に依存した動作
解決策
1. クラスを分離して定義
| |
2. 配列構文を使用
| |
3. computedプロパティを使用
| |
4. 三項演算子で明示的に
| |
5. ベースクラスを静的に定義
| |
6. 関数で動的に生成
| |
よくある間違い
- 複数の条件で同じクラス名を使用する
- 条件の評価順序を考慮しない
- 静的クラスと動的クラスを混在させる際にx-bind:classで上書きしてしまう
関連エラー
参考リンク
この記事は役に立ちましたか?