# Message
"If you want to use message, you need to wrap the component where you call related methods inside MessageProvider and use use_message to get the API."
```rust demo
let message = use_message();
let success = move |_| {
message.create(
"Success".into(),
MessageVariant::Success,
MessageOptions {closable: true, duration: std::time::Duration::from_secs(0)},
);
};
let warning = move |_| {
message.create(
"Warning".into(),
MessageVariant::Warning,
Default::default(),
);
};
let error = move |_| {
message.create("Error".into(), MessageVariant::Error, Default::default());
};
view! {
}
```
### MessageProvider Props
| Name | Type | Default | Desciption |
| --------- | ------------------ | ----------------------- | ------------------------------- |
| placement | `MessagePlacement` | `MessagePlacement::Top` | Position to place the messages. |
### MessageProvider Injection Methods
| Name | Type | Description |
| ------ | ------------------------------------------------------------------------------ | ------------------------ |
| create | `fn(&self, content: String, variant: MessageVariant, options: MessageOptions)` | Use create type message. |
### MessageOptions fields
| Name | Type | Default | Description |
| --- | --- | --- | --- |
| duration | `Duration` | `std::time::Duration::from_secs(3)` | How long the message will be displayed. 0 for permanent message |
| closable | `bool` | `false` | Can the message be manually closed. |