HyperHTMLElement
を使用する場合は、要素であるため、this.children
またはthis.querySelector()
を使用するだけでコンポーネントの内容にアクセスできます。hyper.Componentを使用する場合のDOMへのアクセス
しかし、hyper.Component
を使用すると、同様の動作をどのように達成できますか?
私が心に留めている事実はReact docsです:https://facebook.github.io/react/docs/refs-and-the-dom.html - DOMの中に特定のノードを集中させたいと思います。
私はこの問題を解決しようとしているcodepenサンドボックスがあります。アイデアはrender()
が同じNode
を毎回返すので、私は返す前にそれを保存してthis.node
として、後でそれにアクセスできることであるhttps://codepen.io/asapach/pen/oGvdBd?editors=0010
を:
render() {
this.node = this.html`
<div>
<input type="text" />
<input type="button" value="Focus the text input" onclick=${this} />
</div>
`;
return this.node;
}
しかし、それは私には見えません。これを行うより良い方法はありますか?
私はオプションとして 'event.target'を使うことを考えていました。 – DreamSonic
コンストラクタで 'render()'を呼び出すのは本当に良い考えですか? – DreamSonic
ルートノードを参照する必要がある場合は、レンダリングを遅かれ早かれ呼び出すことで違いはありません。同じコンテンツでhyperHTMLコンテンツを2回更新するコストはゼロに近いため、後でコンポーネントを再レンダリングしてもパフォーマンスの問題は発生しません。しかし、実際にルートノードに直接アクセスする必要のある重要ではないコンポーネントの場合は、イベント駆動型の方法でDOMを操作することをお勧めします。それは確かにきれいです。 –