Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
daw_mp06_reactpy [2023/06/27 15:01] armando_mata_urbaneja |
daw_mp06_reactpy [2023/06/27 16:02] (actual) armando_mata_urbaneja |
||
---|---|---|---|
Línia 13: | Línia 13: | ||
Trobaràs la seva documentació a [[https:// | Trobaràs la seva documentació a [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
Tot i estar força incomplerta podem veure com es codifiquen molts dels elements típics de ReactJS en ReactPy. Des d' | Tot i estar força incomplerta podem veure com es codifiquen molts dels elements típics de ReactJS en ReactPy. Des d' | ||
Línia 58: | Línia 62: | ||
- | Observa com el retorn es fa emprant html, i els elements que hi vulguem visualitzar. | + | Observa com el retorn es fa emprant |
+ | Pots obtenir més informació a | ||
+ | [[https:// | ||
+ | Un altre exemple d' | ||
+ | < | ||
+ | html.div( | ||
+ | html.h1(" | ||
+ | html.ul( | ||
+ | html.li(" | ||
+ | html.li(" | ||
+ | ), | ||
+ | ) | ||
+ | </ | ||
+ | ==== Esdeveniments ==== | ||
+ | Els elements html també poden rebre esdeveniments, | ||
+ | < | ||
+ | return html.button({" | ||
+ | </ | ||
+ | Tens més exemples a [[https:// | ||
+ | |||
+ | ==== 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:// | ||
+ | |||
+ | Un exemple senzill: | ||
+ | |||
+ | < | ||
+ | choices, set_choices = hooks.use_state([]) | ||
+ | resposta, set_resposta = hooks.use_state("" | ||
+ | </ | ||
+ | |||
+ | |||
+ | Aquí creem dues variable d' | ||
+ | En un mètode que gestioni un esdeveniment podem, per exemple, canviar el seu valor: | ||
+ | |||
+ | |||
+ | < | ||
+ | def handle_choices(event): | ||
+ | | ||
+ | </ | ||
+ | |||
+ | I aquesta variable d' | ||
+ | |||
+ | < | ||
+ | return html.div(resposta) | ||
+ | </ | ||
+ | |||
+ | |||
+ | Cal recordar, que a l' | ||
+ | |||
+ | Finalment indicar que tenim altres hooks, propis de React, com ja he esmentat a l' | ||
+ | |||
+ | Teniu un [[https:// | ||
+ | |||
+ | A cotinuació es mostra un fragment del codi | ||
+ | |||
+ | < | ||
+ | from reactpy import component, | ||
+ | from reactpy.backend.fastapi import | ||
+ | from fastapi import FastAPI | ||
+ | |||
+ | import requests | ||
+ | |||
+ | @component | ||
+ | def Item(text, initial_done=False): | ||
+ | done, set_done = hooks.use_state(initial_done) | ||
+ | |||
+ | def handle_click(event): | ||
+ | set_done(not done) | ||
+ | | ||
+ | attr= {" | ||
+ | |||
+ | if done: | ||
+ | | ||
+ | else: | ||
+ | | ||
+ | html.span(attr, | ||
+ | html.button({ " | ||
+ | ) | ||
+ | |||
+ | @component | ||
+ | def Todos(items): | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | def handle_choices(event): | ||
+ | set_resposta(" | ||
+ | |||
+ | def handle_click(event): | ||
+ | id = event[' | ||
+ | # obtenim llista de choices | ||
+ | choices_API = requests.get(' | ||
+ | resultat = choices_API.json() | ||
+ | items_choices= resultat[' | ||
+ | set_choices( [ | ||
+ | html.option( { " | ||
+ | for i in items_choices | ||
+ | ]) | ||
+ | |||
+ | | ||
+ | html.option( { " | ||
+ | for i in items | ||
+ | ] | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | @component | ||
+ | def HelloWorld(): | ||
+ | response_API = requests.get(' | ||
+ | resultat = response_API.json() | ||
+ | questions = resultat[' | ||
+ | # for parcial in resultat: | ||
+ | # print(parcial[' | ||
+ | for parcial in questions: | ||
+ | print(parcial[' | ||
+ | |||
+ | return html._( | ||
+ | html.h1(" | ||
+ | html.div(Todos(questions)), | ||
+ | |||
+ | html.ul( | ||
+ | Item(" | ||
+ | Item(" | ||
+ | Item(" | ||
+ | | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | app = FastAPI() | ||
+ | configure (app, HelloWorld ) | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||