Daisyuiでのエラー anchorName does not exist in type
Daisyuiで"Dropdown using popover API and anchor positioning"を使用したときエラーについて
<button className="btn" popoverTarget="popover-1" style={{ anchorName: "--anchor-1" } /* as React.CSSProperties */}> Button </button> <ul className="dropdown menu w-52 rounded-box bg-base-100 shadow-sm" popover="auto" id="popover-1" style={{ positionAnchor: "--anchor-1" } /* as React.CSSProperties */ }> <li><a>Item 1</a></li> <li><a>Item 2</a></li> </ul>
Object literal may only specify known properties, and 'anchorName' does not exist in type 'Properties<string | number, string & {}>'
DaisyUIのDropdownを使用する際に発生するエラーメッセージは、Reactのスタイルプロパティに定義されていないプロパティを指定しているためです。anchorName
やpositionAnchor
は、ReactのCSSStyleDeclarationに存在しないため、エラーが発生しています。
以下の修正を試みてください:
style
プロパティを削除し、代わりにDaisyUIの機能に基づいたクラス名などを使用してください。popover
の使い方や、DaisyUIのドキュメントで推奨されている構文を確認してください。
例として修正したコードは以下の通りです:
<button className="btn" popoverTarget="popover-1"> Button </button> <ul className="dropdown menu w-52 rounded-box bg-base-100 shadow-sm" popover="auto" id="popover-1"> <li><a>Item 1</a></li> <li><a>Item 2</a></li> </ul>
anchorName
やpositionAnchor
は不要です。これでエラーは解消されるはずです。
もし特定の位置にドロップダウンを配置したい場合は、CSSでのカスタムスタイルを利用することを検討してみてください。DaisyUIの構成が何らかの理由で不十分な場合は、公式ドキュメントやサンプルを参考にすることをお勧めします。
HTMLではなくReactとJSXを使用しているので必要です
失礼いたしました。ReactとJSXを使用している場合、DaisyUIのポップオーバーAPIを使用する際にカスタムスタイルを適用する方法について、より具体的なアプローチを説明いたします。
まず、エラーの原因であるanchorName
やpositionAnchor
は、Reactのスタイルプロパティではないため、別の方法でポップオーバーの位置を設定する必要があります。
DaisyUIのドキュメントに基づくと、ポップオーバーの位置を設定するためには、別の手法を使用することが推奨されます。下記の方法を試してみてください。
import React from 'react'; const DropdownExample = () => { return ( <div> <button className="btn" popoverTarget="popover-1" data-popover-placement="bottom"> Button </button> <ul className="dropdown menu w-52 rounded-box bg-base-100 shadow-sm" popover="auto" id="popover-1" style={{ display: 'none' }} // 初期状態では非表示 > <li><a>Item 1</a></li> <li><a>Item 2</a></li> </ul> </div> ); } export default DropdownExample;
ポイント:
-
data属性の使用:
data-popover-placement
を使ってドロップダウンの位置を指定します(例:bottom
、top
、left
、right
など)。
-
表示制御:
- 初期では
style={{ display: 'none' }}
で非表示にして、ボタンをクリックしたときに表示できるようにします。この場合、ポップオーバーの表示・非表示を制御するロジックを追加する必要があります。
- 初期では
-
カスタムロジックの追加:
- ボタンがクリックされたときに状態を更新し、ドロップダウンを表示するためのロジックを含めることも考慮してください。たとえば、useStateフックを利用して、ドロップダウンの表示状態を管理することができます。
import React, { useState } from 'react'; const DropdownExample = () => { const [isOpen, setIsOpen] = useState(false); const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button className="btn" onClick={toggleDropdown}> Button </button> {isOpen && ( <ul className="dropdown menu w-52 rounded-box bg-base-100 shadow-sm"> <li><a>Item 1</a></li> <li><a>Item 2</a></li> </ul> )} </div> ); } export default DropdownExample;
このコードは、ボタンをクリックしたときにドロップダウンメニューが表示される基本的な実装例です。エラーを回避しながら、期待される動作を達成することができます。
この回答は役に立たない
久々あなので忘れていた。
TSを使っているときは、以下のようにコメントを外せばよかった。
<button className="btn" popoverTarget="popover-1" style={{ anchorName: "--anchor-1" } as React.CSSProperties }> Button </button> <ul className="dropdown menu w-52 rounded-box bg-base-100 shadow-sm" popover="auto" id="popover-1" style={{ positionAnchor: "--anchor-1" } as React.CSSProperties }> <li><a>Item 1</a></li> <li><a>Item 2</a></li> </ul>