#yew-component #data-link #mutate #messages #sending #msg #self

yew_data_link

此crate允许通过发送消息从其他组件更改yew函数组件的数据

1个不稳定版本

0.2.3 2024年4月24日

#2 in #mutate

MIT许可证

8KB
124

Yew数据链接

此crate允许通过发送消息从其他组件更改yew函数组件的数据。

有关更多信息,请参阅docs.rs文档


lib.rs:

Yew数据链接

此crate允许通过发送消息从其他组件更改yew函数组件的数据。

用法

要从组件A更改组件B的状态

示例

use yew::prelude::*;
use yew_autoprops::autoprops;
use yew_data_link::{use_bind_link, use_data, use_link, MsgData, UseLinkHandle};

struct Num(i64);

enum NumMsg {
    Inc,
    Dec,
}

impl MsgData for Num {
    type Msg = NumMsg;

    fn msg(&mut self, msg: NumMsg) {
        match msg {
            NumMsg::Inc => self.0 += 1,
            NumMsg::Dec => self.0 -= 1,
        };
    }
}

#[autoprops]
#[function_component]
fn Counter(#[prop_or_default] link: &UseLinkHandle<Num>) -> Html {
    let num = use_data(|| Num(0));
    use_bind_link(link.clone(), num.clone());

    html! {
        <div>{num.current().0}</div>
    }
}

#[function_component]
fn App() -> Html {
    let link = use_link();

    html! {
        <div>
            <button onclick={
                let link = link.clone();
                move |_| link.msg(NumMsg::Inc)
            }>{"+"}</button>

            <Counter link={link.clone()} />

            <button onclick={
                let link = link.clone();
                move |_| link.msg(NumMsg::Dec)
            }>{"-"}</button>
        </div>
    }
}

fn main() {
    yew::Renderer::<App>::new().render();
}

查看示例文件夹以获取更多信息。

依赖项

~10–14MB
~253K SLoC