sycamore-rs / sycamore

A library for creating reactive web apps in Rust and WebAssembly
https://sycamore-rs.netlify.app
MIT License
2.79k stars 148 forks source link

Nested component click event error #654

Closed ys2rice2yangsong closed 8 months ago

ys2rice2yangsong commented 8 months ago

Describe the bug A clear and concise description of what the bug is.

To Reproduce Steps to reproduce the behavior:

[component(inline_props)]

fn T(cx:Scope,title: String, level: i32) -> View { let tt = title.clone(); let tt_clone = title.clone(); view!{ cx, ( if level<5 { view!{ cx, T( title="afasdf".to_string(), level=level+1 ) } } else { view!{ cx, p( on:click=move |e| { console!(title.clone()); } ){ (tt) } } } ) } }

error info: cannot move out of title, a captured variable in an FnMut closure title is moved hererustcClick for full compiler diagnostic main.rs(24, 23): captured outer variable main.rs(27, 5): captured by this FnMut closure main.rs(43, 38): variable moved due to use in closure main.rs(43, 38): move occurs because title has type String, which does not implement the Copy trait

Expected behavior A clear and concise description of what you expected to happen.

Screenshots If applicable, add screenshots to help explain your problem.

Environment

Additional context Add any other context about the problem here.

lukechu10 commented 8 months ago

You probably want to rebind tt inside the else block. This is a Rust error, not a bug with Sycamore.