| Crates.io | cercis-component |
| lib.rs | cercis-component |
| version | 1.2.3 |
| created_at | 2024-05-01 19:13:33.82071+00 |
| updated_at | 2025-04-27 16:04:52.904048+00 |
| description | component macro for cercis |
| homepage | |
| repository | https://github.com/magwoo/cercis |
| max_upload_size | |
| id | 1226748 |
| size | 11,770 |

Macro for cercis package
cargo add cercis
Used only with the cercis package
For more examples, see cercis
all data is transferred to the component by reference
use cercis::prelude::*;
fn main() {
let page = rsx!(div {
MyComponent {}
});
// output: <div><h1>my component</h1></div>
println!("{}", page.render())
}
#[component]
fn MyComponent() -> Element {
rsx!(h1 { "my component" })
}
Parameters are declared as normal function parameters
use cercis::prelude::*;
fn main() {
let text = "Lorem ipsum";
let page = rsx!(div {
MyComponent {
text: text
}
});
// output: <div><p>Lorem ipsum</p></div>
println!("{}", page.render())
}
#[component]
fn MyComponent<'a>(text: &'a str) -> Element {
rsx!(p { "{text}" })
}
If the parameter is an option, then you can omit it when calling the component
use cercis::prelude::*;
fn main() {
let text = "Lorem ipsum";
let page = rsx!(div {
MyComponent {}
MyComponent {
text: text
}
});
// output: <div><p>empty</p><p>Lorem ipsum</p></div>
println!("{}", page.render())
}
#[component]
fn MyComponent<'a>(text: Option<&'a str>) -> Element {
let text = text.unwrap_or("empty");
rsx!(p { "{text}" })
}
the component can accept elements example: Element<'a> and children if you name the variable children: Element<'a>
all
Elementtypes are optional
use cercis::prelude::*;
fn main() {
let text = "Lorem ipsum";
let page = rsx!(div {
MyComponent { span { "children" } }
MyComponent {
text: rsx!(p { "{text}" }),
span { "children" }
}
MyComponent { text: rsx!(p { "my text" }) }
});
/* output(formatted):
<div>
<div class='container'>
<div></div>
<span>children</span>
</div>
<div class='container'>
<div><p>Lorem ipsum</p></div>
<span>children</span>
</div>
<div class='container'>
<div><p>my text</p></div>
</div>
</div>
*/
println!("{}", page.render())
}
#[component]
fn MyComponent<'a>(text: Element<'a>, children: Element<'a>) -> Element {
rsx!(div {
class: "container",
div { text }
children
})
}
If you have any problems create issue