Waiters composition
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, react
- Área
- frontend
Línea de trabajo
Empieza leyendo la useWait API y createWaitingContext; después, inspecciona el enfoque del proveedor Waiter descrito en el issue. Define cómo los waiters compuestos propagan el estado de sus hijos y si se admite el inicio/finalización manual; se considera terminado cuando el comportamiento de la API y los casos límite están especificados y verificados respecto al comportamiento existente del waiter.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I've been using the library for a while and I noticed that I could simplify my code with something like composing of the waiters. For example, given that I have two waiters bar and baz, I would like to have foo waiter that is waiting if one of bar or baz is waiting.
Motivation
Now, first I was thinking about adding array argument support to isWaiting so that I could call isWaiting(["foo", "bar"]) or a bit more explicit convenience function isAnyWaiting(["foo", "bar"]).
But after looking into my code I realized it's not enough. In my case, I have some big component
Foo rendering smaller components Bar and Baz that wait on each other. That works fine with current API. It gets more convoluted when you would like to have some other component Qux that doesn't exactly want to know about the lower-level ones but needs to know if Foo or any of it's children waits. So currently in Qux you would need to write
const isFooWaiting = isWaiting("baz") && isWaiting("baz")
That's not ideal because Qux needs to know too much about Foo internals.
Proposal
Create a separate method that will create a new waiter if one of the child waiters is waiting. It could be similar in usage to createWaitingContext:
const { compose } = useWait();
const { isWaiting } = compose("Foo", ["Bar", "Baz"])
Foois a waiter, you can check if it's waiting withisWaiting("Foo")Foois always waiting ifBarorBazis waiting.- the open question is should you be able to manually start and end a composed waiter?
Anternative idea
Maybe instead adding a compose method, we could compose Waiter providers? It's just an idea, I don't know if it's possible or makes sense but provier could have an optional name and be a child of another warapper like this?
<Waiter>
<Waiter name="foo">
// ...
</Waiter>
</Waiter>
Then if the inner's anyWaiting() is true, foo is waiting in the outer waiter?
Again, it's just an idea.
- Lenguaje dominante
- JavaScript
- Estrellas
- 305
- Forks
- 28
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de f/react-wait
-
delta Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
f/react-wait#15 ·
-
README.md Proofreading Request Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 25/100
f/react-wait#14 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
f/react-wait#13 · 5 comentarios · 5 reacciones ·
-
Add withWait() HOC Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
f/react-wait#8 · 1 reacción ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
f/react-wait#7 · 1 comentario ·
Todos los issues de f/react-wait
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
mksglu/context-mode#1200 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
neondatabase/website#5944 ·
-
module: core
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
jaegertracing/jaeger-ui#4506 ·