Comments (2)
It's an interesting question. Robust flexibility is the place where Rust is awesome.
Actually we can use list of messages which helps us to send multiple messages by single event, but it will force us to use lists everywhere:
fn update(context: &mut Context<Msg>, model: &mut Model, msgs: Vec<Msg>) {
for msg in msgs {
// ...
}
}
html! {
<button onclick=|_| vec![Msg::Increment],>{ "Increment" }</button>
<button onclick=|_| vec![Msg::Decrement],>{ "Decrement" }</button>
<button onclick=|_| vec![Msg::Increment, Msg::Increment],>{ "Increment Twice" }</button>
}
It works, but little messy and has performance impact: we should wrap even single message in a list, but lists is a dynamic struct and works slower than plain one. I think the good approach is to use Rust struct features and add special message type to send multiple messages at once (I've already did it in #52):
enum Msg {
Increment,
Decrement,
Bulk(Vec<Msg>),
}
fn update(context: &mut Context<Msg>, model: &mut Model, msg: Msg) {
match msg {
Msg::Bulk(list) => {
for msg in list { update(context, model, msg); }
}
_ => { }
}
}
html! {
<button onclick=|_| Msg::Bulk(vec!(Msg::Increment, Msg::Increment)),>{ "Increment Twice" }</button>
}
Does it solve your issue?
from yew.
Ah, that's a great approach! It would be nice to see something built-in, but this definitely solves my problem, at least for now. =)
from yew.
Related Issues (20)
- Caution about navigator callbacks in functional components is confusing
- Yew Agent documentation
- When passing `Classes` in `html!`, component props don't need `.clone()`, but element props do HOT 1
- [Feature]: Provide a `Default` trait implementation for the `UseStateHandle` struct HOT 2
- Japanese documents are out of date HOT 1
- Context with Rc<Refcell<T>> reducer type has unexpected behavior HOT 1
- Why not provide some Form components? HOT 1
- SSR + hydration results in a stalled request
- I am unable to build even the simplest Yew applications using Rust 1.76 and running under macOS 14.3 HOT 1
- Blob download encoding
- `VRaw` namespace support for `svg` contents.
- Issue with change detection? HOT 4
- Port issue HOT 1
- implicit_clone does not play nice with indexmap 2.26 HOT 4
- the trait bound `implicit_clone::unsync::IMap<_, _>: From<indexmap::IndexMap<K, V>>` is not satisfied HOT 13
- Tutorial error about fetching data HOT 1
- i can't run Build a sample app,help me pls HOT 1
- SVG issue with lineargradient. HOT 2
- Individual item render order is reversed HOT 1
- Build fail for WebAssembly on Windows with wasm-pack
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yew.