[Day19] 如何在 Yew Wasm 中读取内容

owo 好像剩下几天了,时间过得好快
但是我总觉得後面蛮难写的 我 Rocket 还没写
至於 Database 的部份我应该会讲 SQLx 避免跟以前的文章撞到
总之,虽然前途感觉布满了许多荆棘,但是文章还是要继续写的,希望至少有佳作 owob


开始今天的内容吧~
这边先预告一下,之後两天的内容会是 用 WASM 做凯萨密码解密器
主要是总结拉,在写算法时也能够复习之前的内容 owob
好了 垃圾话讲的有点多了。
那今天讲的内容是前面没有利用到的输入部份
如果有认真看的话会发现说
好像前面的专案 Example 跟 POPCAT 其实都只有运用到值的改动或撰写
而没有利用到输入的部份
但是我觉得,没有人机互动的东西,绝对不是一个好网站
虽然 POPCAT 某种程度算互动 (?
那麽基本上 如果我要输入到某个地方
我会用 oninput 这个让他去即时更新
那要怎麽写呢

oninput=self.link.callback(|input: InputData|Msg::Payload(input.value))

本行出自 Yew Example 的 JS callback
那这边这行其实是使用 textarea 去建构的
至於使用其实跟我们昨天讲的差不多
差别在多了一个 InputData
而这个 InputData 其中的 value 就会存着整个输入框中的值
但是要记得的一点是 他回传的是 String
这点格外重要
即使是使用 html 里面的 type = "number"
还是一样会回传 String 所以在使用时记得对回传的值进行转型
那怎麽转型呢 这其实是我之前漏讲的东西
Rust STD Docs
这是转型用法的 Docs 建议去看看
那他的形式

pub fn parse<F>(&self) -> Result<F, <F as FromStr>::Err>

会看到说 他将 self 传入然後 F 是我们之前讲到的泛型
也就是说会回传 F 形式的值
但是要记得他回传是 Result 所以要用 .unwrap() 去拿到他并非 Error 的时候的值
喔对 而且 当你输入非数字以外的字串 他会回传 Error 喔
EX:

let oao = "owo".parse<i32>();
if oao.is_err() {
    print!("Yes");
}

也就是回传 Err
OK 然後该来讲要怎麽处理弄出来的东东了
之前列举有讲过
列举是可以带值的
所以代表说可以利用这点去传入值

enum Msg {
    Str(String),
    Num(i32),
}

可以这样写
那麽 match 的时候就要这样写了

Msg::Str(str) => {
    self.str = str.clone();
    true
}
Msg::Num(num) => {
    self.num = num;
    true
}

然後要记得喔
传入的时候记得以 enum 你设定的类型去做传入


好了 那今天差不多讲到这边
然後最後补上之前没有讲的 Trunk 设定
可以直接在根目录 去创建一个 Trunk.toml 去设定喔
Trunk


<<:  [重构倒数第08天] - 图片瘦身与静态资源gzip优化

>>:  知识管理附加健康管理

每个人都该学的30个Python技巧|技巧 3:与电脑沟通的方法 — input() 及 print()(字幕、衬乐、练习)

昨天教了一堆变数的资料型态,分别有整数(int)、浮点数(float)、字串(str)、布林值(bo...

踏上在AI时代追求人性之路(3):从人文社会背景出发

不知不觉已经倒数第二篇啦! 上一篇分享了一些给设计人想往这个方向发展的相关资源, 这篇就来谈谈如果是...

还在烦恼CSS flex怎麽调整吗?也许你该试试Chrome 90 的新功能 — flexbox Editor

新手在学习CSS flex时,首要观念就是要厘清什麽是main axis与cross axis之外,...

Day 23 : 案例分享(7.2) 库存与制造 - 供应商直运、制造出货、采购出货(自动化库存调拨)

案例说明及适用场景 销售订单出货时,公司可以决定要走公司仓出库路线、或是由供应商直送(用於代销),或...

Day27 ATT&CK for ICS - Collection(3)

T0861 Point & Tag Identification 攻击者收集环境内部的 po...