参照 (Refs)
ref
キーワードは、任意の HTML 要素やコンポーネントに使用して、その要素に付随する DOM Element
を取得できます。これにより、view
ライフサイクルメソッドの外で DOM を変更することができます。
これは、canvas 要素を取得したり、ページの異なる部分にスクロールしたりするのに便利です。例えば、コンポーネントの rendered
メソッドで NodeRef
を使用すると、view
からレンダリングされた後に canvas 要素に描画呼び出しを行うことができます。
構文は次のとおりです:
use web_sys::Element;
use yew::{html, Component, Context, Html, NodeRef};
struct Comp {
node_ref: NodeRef,
}
impl Component for Comp {
type Message = ();
type Properties = ();
fn create(_ctx: &Context<Self>) -> Self {
Self {
node_ref: NodeRef::default(),
}
}
fn view(&self, _ctx: &Context<Self>) -> Html {
html! {
<div ref={self.node_ref.clone()}></div>
}
}
fn rendered(&mut self, _ctx: &Context<Self>, _first_render: bool) {
let has_attributes = self.node_ref
.cast::<Element>()
.unwrap()
.has_attributes();
}
}