Enum virtual_node::VirtualNode
source · [−]Expand description
When building your views you’ll typically use the html!
macro to generate
VirtualNode
’s.
html! { <div> <span></span> </div> }
really generates a VirtualNode
with
one child (span).
Later, on the client side, you’ll use the diff
and patch
modules to
update the real DOM with your latest tree of virtual nodes (virtual dom).
Or on the server side you’ll just call .to_string()
on your root virtual node
in order to recursively render the node and all of its children.
TODO: Make all of these fields private and create accessor methods TODO: Create a builder to create instances of VirtualNode::Element with attrs and children without having to explicitly create a VElement
Variants
Element(VElement)
An element node (node type ELEMENT_NODE
).
Text(VText)
A text node (node type TEXT_NODE
).
Note: This wraps a VText
instead of a plain String
in
order to enable custom methods like create_text_node()
on the
wrapped type.
Implementations
sourceimpl VirtualNode
impl VirtualNode
sourcepub fn children_recursive<'a>(&'a self) -> Vec<&'a VirtualNode>
pub fn children_recursive<'a>(&'a self) -> Vec<&'a VirtualNode>
Get a vector of all of the VirtualNode children / grandchildren / etc of your virtual_node.
Children are visited recursively depth first.
Examples
let component = html! {
<div>
<span> {"Hi!"} </span>
<em> {"There!!"} </em>
<div> {"My Friend"} </div>
</div>
};
let children = component.children_recursive();
assert_eq!(children[2].tag(), "em");
sourceimpl VirtualNode
impl VirtualNode
sourcepub fn element<S>(tag: S) -> Self where
S: Into<String>,
pub fn element<S>(tag: S) -> Self where
S: Into<String>,
Create a new virtual element node with a given tag.
These get patched into the DOM using document.createElement
let _div = VirtualNode::element("div");
sourcepub fn text<S>(text: S) -> Self where
S: Into<String>,
pub fn text<S>(text: S) -> Self where
S: Into<String>,
Create a new virtual text node with the given text.
These get patched into the DOM using document.createTextNode
let _text = VirtualNode::text("My text node");
sourcepub fn as_velement_ref(&self) -> Option<&VElement>
pub fn as_velement_ref(&self) -> Option<&VElement>
sourcepub fn as_velement_mut(&mut self) -> Option<&mut VElement>
pub fn as_velement_mut(&mut self) -> Option<&mut VElement>
sourcepub fn as_vtext_ref(&self) -> Option<&VText>
pub fn as_vtext_ref(&self) -> Option<&VText>
sourcepub fn as_vtext_mut(&mut self) -> Option<&mut VText>
pub fn as_vtext_mut(&mut self) -> Option<&mut VText>
sourcepub fn create_dom_node(
&self,
node_idx: u32,
events: &mut EventsByNodeIdx
) -> Node
pub fn create_dom_node(
&self,
node_idx: u32,
events: &mut EventsByNodeIdx
) -> Node
Create and return a CreatedNode
instance (containing a DOM Node
together with potentially related closures) for this virtual node.
sourcepub fn insert_space_before_text(&mut self)
pub fn insert_space_before_text(&mut self)
Used by html-macro to insert space before text that is inside of a block that came after an open tag.
html! {
So that we end up with
sourcepub fn insert_space_after_text(&mut self)
pub fn insert_space_after_text(&mut self)
Used by html-macro to insert space after braced text if we know that the next block is another block or a closing tag.
html! {
So that we end up with
Trait Implementations
sourceimpl Debug for VirtualNode
impl Debug for VirtualNode
sourceimpl Display for VirtualNode
impl Display for VirtualNode
sourceimpl<V> From<&'_ V> for VirtualNode where
V: View,
impl<V> From<&'_ V> for VirtualNode where
V: View,
sourceimpl From<&'_ str> for VirtualNode
impl From<&'_ str> for VirtualNode
sourceimpl From<String> for VirtualNode
impl From<String> for VirtualNode
sourceimpl From<VElement> for VirtualNode
impl From<VElement> for VirtualNode
sourceimpl From<VText> for VirtualNode
impl From<VText> for VirtualNode
sourceimpl From<VirtualNode> for IterableNodes
impl From<VirtualNode> for IterableNodes
sourcefn from(other: VirtualNode) -> Self
fn from(other: VirtualNode) -> Self
Converts to this type from the input type.
sourceimpl Into<IntoIter<VirtualNode, Global>> for VirtualNode
impl Into<IntoIter<VirtualNode, Global>> for VirtualNode
sourcefn into(self) -> IntoIter<VirtualNode>
fn into(self) -> IntoIter<VirtualNode>
Converts this type into the (usually inferred) input type.
sourceimpl IntoIterator for VirtualNode
impl IntoIterator for VirtualNode
type Item = VirtualNode
type Item = VirtualNode
The type of the elements being iterated over.
type IntoIter = IntoIter<VirtualNode, Global>
type IntoIter = IntoIter<VirtualNode, Global>
Which kind of iterator are we turning this into?
sourceimpl PartialEq<VirtualNode> for VirtualNode
impl PartialEq<VirtualNode> for VirtualNode
sourcefn eq(&self, other: &VirtualNode) -> bool
fn eq(&self, other: &VirtualNode) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &VirtualNode) -> bool
fn ne(&self, other: &VirtualNode) -> bool
This method tests for !=
.
impl StructuralPartialEq for VirtualNode
Auto Trait Implementations
impl !RefUnwindSafe for VirtualNode
impl !Send for VirtualNode
impl !Sync for VirtualNode
impl Unpin for VirtualNode
impl !UnwindSafe for VirtualNode
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more