yewで遊ぶぞーとなって一番手こずったところ。
yew 0.20.0ではyew::start_app
が無くなっているので、yewの(古い)チュートリアルにあるコードはそもそも動かない。
かといってdocsにあるExampleもそのままでは動かない。具体的にはyew::Renderer:<App>::new().render();
の部分で could not find `Renderer` in `yew`
と言われる。
そのものズバリなissueで答えが出てた。
Cargo.toml
ファイルのdependenciesのyew
の項目にfeatures
を指定するとよい。
yew = { version = "0.20.0", features = ["csr"] }
よく見るとyewのdocsのRender
にcsr
というfeaturesのタグが貼ってある。これそういう意味だったのか。つまりCargoのマニュアルをあまり真面目に読んでいなかったのが敗因。
おまけ。function_componentとwasm_bindgenで動かす時のHelloWorldのサンプル:
src/lib.rs
use wasm_bindgen::prelude::wasm_bindgen; use yew::prelude::{function_component, html, Html}; #[function_component(App)] fn app() -> Html { html! { <div><h1>{"Hello, World!"}</h1></div> } } #[wasm_bindgen(start)] pub fn run_app() { yew::Renderer::<App>::new().render(); }
Cargo.toml
[package] name = "yew-app-fn" version = "0.1.0" edition = "2021" [lib] crate-type = ["cdylib", "rlib"] [dependencies] wasm-bindgen = "0.2.83" yew = { version = "0.20.0", features = ["csr"] }