bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


daw_mp06_reactpy

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
Ultima revisió Ambdós costats nova versio
daw_mp06_reactpy [2023/06/26 19:13]
armando_mata_urbaneja
daw_mp06_reactpy [2023/06/27 15:59]
armando_mata_urbaneja
Línia 5: Línia 5:
 {{ ::reactpy-logo-landscape.svg |50px}} {{ ::reactpy-logo-landscape.svg |50px}}
  
-React Py és una llibreria que ens permet crear interfaces amb python sense emprar javascript. Empra, com fa ReactJS, components per a construir l'aplicació client. Per a la seva visualització en un navegador compila el codi python a javascript+React Py és una llibreria que ens permet crear interfaces amb python sense emprar javascript. 
  
 +Es basa, com fa ReactJS, en components per a construir la interfícies de l'aplicació client. Té l'avantatge d'utilitzar el llenguatge Python. Per a desenvolupadors habituats a treballar amb Django o Flask els hi resultarà molt més còmode que utilitzar Javascript. 
 +
 +
 +Tot i així, els navegadors no són capaços d'executar codi en Python, i per tant, per a producció o per a proves en un navegador, l'entorn de desenvolupament compila el codi python a javascript
  
 Trobaràs la seva documentació a [[https://reactpy.dev/docs/index.html|https://reactpy.dev/docs/index.html]].  Trobaràs la seva documentació a [[https://reactpy.dev/docs/index.html|https://reactpy.dev/docs/index.html]]. 
  
-Tot i estar força incomplerta podem veure com esw codifiquen molts dels elements típics de ReactJS en ReactPy. Des d'esdeveniments al més pur estil de javascript,  fins a Hooks com [[https://reactpy.dev/docs/reference/hooks-api.html#use-state|useState]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-effect|useEffect]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-context|useContext]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-reducer|useReducer]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-callback|useCallBack]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-memo|useMemo]] i [[https://reactpy.dev/docs/reference/hooks-api.html#use-ref|useRef]] + 
 + 
 + 
 + 
 +Tot i estar força incomplerta podem veure com es codifiquen molts dels elements típics de ReactJS en ReactPy. Des d'esdeveniments al més pur estil de javascript,  fins a Hooks com [[https://reactpy.dev/docs/reference/hooks-api.html#use-state|useState]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-effect|useEffect]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-context|useContext]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-reducer|useReducer]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-callback|useCallBack]], [[https://reactpy.dev/docs/reference/hooks-api.html#use-memo|useMemo]] i [[https://reactpy.dev/docs/reference/hooks-api.html#use-ref|useRef]] 
  
 ===== Un primer exemple ===== ===== Un primer exemple =====
Línia 32: Línia 40:
 Després d'això creem un fitxer main.py, on importarem les llibreries Després d'això creem un fitxer main.py, on importarem les llibreries
  
-'' +<code> 
-from reactpy import component,html,hooks   +from reactpy import component,html,hooks
 from reactpy.backend.fastapi import  configure from reactpy.backend.fastapi import  configure
 from fastapi import FastAPI from fastapi import FastAPI
  
 +#....
 +
 +#Al final del codi
 app = FastAPI() app = FastAPI()
-configure (app, HelloWorld )''+configure (app, HelloWorld ) 
 +</code>
  
 +I creem el primer component
  
 +<code>
 +@component
 +def HelloWorld():
 +   return html.div("Hello World")
  
 +</code>
  
  
 +Observa com el retorn es fa emprant l'objecte html, i els elements que hi vulguem visualitzar. 
  
 +Pots obtenir més informació a 
  
 +[[https://reactpy.dev/docs/guides/creating-interfaces/html-with-reactpy/index.html|HTML With ReactPy]]
  
  
 +Un altre exemple d'elements renderitzats per html. Observa com creem una estructura d'elements amb més elements i elements fills:
 +
 +<code>
 +html.div(
 +    html.h1("My Todo List"),
 +    html.ul(
 +        html.li("Build a cool new app"),
 +        html.li("Share it with the world!"),
 +    ),
 +)
 +</code>
 +
 +==== Esdeveniments ====
 +
 +
 +Els elements html també poden rebre esdeveniments, i això ho podem expressar com segueix:
 +
 +<code>
 +return html.button({"on_click": handle_event}, display_text)
 +</code>
 +
 +Tens més exemples a [[https://reactpy.dev/docs/guides/adding-interactivity/index.html#section-1-responding-to-events|Responding to Events]]
 +
 +==== Components amb estat ====
 +
 +Com a ReactJS, un dels elements més potents que tenen aquests frameworks són els estats. A ReactPy també tenim aquesta opció, com esmentavem abans, i ens permet renderitzar el nostre SPA a canvis de qualsevol valor. A [[https://reactpy.dev/docs/guides/adding-interactivity/index.html#section-2-components-with-state|Components with state]] tens més exemples.
 +
 +Un exemple senzill:
 +
 +<code>
 +choices, set_choices = hooks.use_state([])
 +resposta, set_resposta = hooks.use_state("")
 +</code>
 +
 +
 +Aquí creem dues variable d'estat, la primera inicialitzada amb un array, i la segona amb una cadena de text
    
 +En un mètode que gestioni un esdeveniment podem, per exemple, canviar el seu valor:
 +
 +
 +<code>
 +def handle_choices(event):
 +   set_resposta("Gràcies per la teva resposta")
 +</code>
 +
 +I aquesta variable d'estat renderitzar-se amb el component
 +
 +<code>
 +return html.div(resposta)
 +</code>
 +
 +
 +Cal recordar, que a l'igual que amb ReactJS, un canvi de valor d'una variable d'estat que es rendertiza en l'html, obliga re-rendertizar l'html, sempre sense recàrrega de l'html, ja que és un spa.
 +
 +Finalment indicar que tenim altres hooks, propis de React, com ja he esmentat a l'inici de l'article, però que aquí no detallarem
 +
 +Teniu un [[https://github.com/armandmt/reactpy|repositori de github]] on podeu veure un projecte sencer. En ell es consulta dues API's per oblir dos select
 +
 +
  
  
daw_mp06_reactpy.txt · Darrera modificació: 2023/06/27 16:02 per armando_mata_urbaneja