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"] }