diff --git a/packages/yew-macro/src/html_tree/html_element.rs b/packages/yew-macro/src/html_tree/html_element.rs
index 663f72797ce..e3d792a138d 100644
--- a/packages/yew-macro/src/html_tree/html_element.rs
+++ b/packages/yew-macro/src/html_tree/html_element.rs
@@ -269,7 +269,7 @@ impl ToTokens for HtmlElement {
};
let listeners = if listeners.is_empty() {
- quote! { ::std::vec![] }
+ quote! { ::yew::virtual_dom::listeners::Listeners::None }
} else {
let listeners_it = listeners.iter().map(|Prop { label, value, .. }| {
let name = &label.name;
@@ -278,7 +278,11 @@ impl ToTokens for HtmlElement {
}
});
- quote! { ::std::vec![#(#listeners_it),*].into_iter().flatten().collect() }
+ quote! {
+ ::yew::virtual_dom::listeners::Listeners::Pending(
+ ::std::boxed::Box::new([#(#listeners_it),*])
+ )
+ }
};
// TODO: if none of the children have possibly None expressions or literals as keys, we can
diff --git a/packages/yew-macro/tests/html_macro/element-fail.stderr b/packages/yew-macro/tests/html_macro/element-fail.stderr
index 4b1507959b8..6066546ee7e 100644
--- a/packages/yew-macro/tests/html_macro/element-fail.stderr
+++ b/packages/yew-macro/tests/html_macro/element-fail.stderr
@@ -302,69 +302,68 @@ error[E0277]: the trait bound `Option<{integer}>: IntoPropValue