Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
Despachar y Escuchar Acción con Hooks en React (sin Redux)

Quería compartir acciones a través de diferentes lugares en el árbol de componentes como:

 // in one component, listen an action useListener("DELETE", (payload) => { console.log("DELETE EVENT 1", payload); }); // in another component, dispatch action const dispatch = useDispatch(); dispatch("DELETE", payload);

Se me ocurre tal implementación:

 const globalListener = {}; export const useListener = (actionName = "default", fn, dependencies = []) => { const listenerRef = useRef(Symbol("listener")); useEffect(() => { const listener = listenerRef.current; return () => { delete globalListener[actionName][listener]; }; }, []); useEffect(() => { const listener = listenerRef.current; if (!globalListener?.[actionName]) { globalListener[actionName] = {}; } globalListener[actionName][listener] = fn; }, dependencies); }; export const useAction = () => { const dispatch = (actionName, payload) => { const actionListener = globalListener?.[actionName]; if (!actionListener) { return; } const keys = Reflect.ownKeys(actionListener); keys.forEach((key) => { actionListener[key]?.(payload); }); }; return dispatch; };

Me gustaría saber qué tipo de riesgos/fallas puede traer dicha implementación. Creo que podría usar el middleware de useReducer para tal uso, pero sería excesivo usar todo el código de useReducer para hacer tal implementación.

También; ¿Cuáles podrían ser otros enfoques para resolver esto? Con o sin biblioteca extra...

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!