|Nome = React Native
|Logo = React Native Logo.png
|Sviluppatore = [[FacebookMeta Platforms|Meta]] e community
|DataPrimaVersione = [[2015]]
|UltimaVersione = 0.64.2
|DataUltimaVersione = 35 Giugnosettembre 20212022
|SistemaOperativo = multipiattaforma
|Linguaggio = JavaScript
|Linguaggio2 = Java
|Linguaggio3 = C++
|LinguaggioAltri = [[Objective C]], [[Python]]
|Genere = web framework
|Licenza = [[Licenza MIT]]
|SitoWeb = https://reactnative.dev/
|nome = React Native
}}'''React Native''' è un [[framework per applicazioni mobili]] [[open- source]] creato da [[Meta Platforms|Meta]] <ref>{{Cita web|url=https://www.oreilly.com/library/view/learning-react-native/9781491929049/ch01.html|sito=oreilly.com|dataaccessoaccesso=30 July 2020}}</ref>. Viene utilizzato per sviluppare applicazioni per [[Android]], <ref>{{Cita web|url=https://code.facebook.com/posts/1189117404435352/react-native-for-android-how-we-built-the-first-cross-platform-react-native-app/}}</ref> [[Android TV]], <ref>{{Cita web|url=https://reactnative.dev/|sito=reactnative.dev|dataaccessoaccesso=2020-10-02}}</ref> [[iOS]], [[macOS]], <ref name=":0">{{Cita web|url=https://microsoft.github.io/react-native-windows/|sito=microsoft.github.io|dataaccessoaccesso=2020-10-02}}</ref> [[tvOS]], <ref>{{Cita web|url=https://dlowder-salesforce.github.io/react-native-apple-tv/|sito=React Native for Apple TV|dataaccessoaccesso=2020-10-02|titolo=Copia archiviata|dataarchivio=21 settembre 2020|urlarchivio=https://web.archive.org/web/20200921042522/https://dlowder-salesforce.github.io/react-native-apple-tv/|urlmorto=sì}}</ref> [[Sito web|Web]], <ref>{{Cita web|url=https://github.com/necolas/react-native-web/|dataaccessoaccesso=2019-11-06}}</ref> [[Microsoft Windows|Windows]] e [[Universal Windows Platform|UWP]] <ref>{{Cita web|url=https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform/|autore=Windows Apps Team|sito=blogs.windows.com|dataaccessoaccesso=2016-11-06}}</ref> consentendo agli sviluppatori di utilizzare [[React (web framework)|React]] framework insieme alle funzionalità della piattaforma nativa. <ref>{{Cita web|url=https://reactnative.dev/docs/out-of-tree-platforms|sito=reactnative.dev|dataaccessoaccesso=30 July 2020}}</ref>
== Storia ==
In passato, l'utilizzo di [[HTML5]] per la versione mobile di Facebook ha portato ad avere un'applicazione instabile con un lento recupero dei dati. <ref>{{Cita web|url=https://mashable.com/2012/09/11/html5-biggest-mistake/|sito=Mashable|lingua=en|dataaccessoaccesso=2020-10-29}}</ref> Per questo motivo, [[Mark Zuckerberg]] ha promesso che [[FacebookMeta Platforms|Meta]] avrebbe presto offerto una migliore esperienza mobile.
All'interno di [[Facebook]]Meta, Jordan Walke ha trovato un modo per generare elementi dell'[[interfaccia utente]] per iOS da un [[Thread (informatica)|thread]] [[JavaScript]] in background, che è diventato la base per il [[React (web framework)|framework React web]] . Hanno deciso di organizzare un [[Hackathon]] interno per perfezionare questo [[prototipo]] in modo da poter creare [[Applicazione mobile|app native]] con questa tecnologia. <ref>{{Cita web|url=https://jobninja.com/blog/short-story-react-native/|dataaccessoaccesso=16 January 2018|titolo=Copia archiviata|dataarchivio=17 gennaio 2018|urlarchivio=https://web.archive.org/web/20180117011925/https://jobninja.com/blog/short-story-react-native/|urlmorto=sì}}</ref>
Dopo mesi di sviluppo, [[Facebook]]Meta ha rilasciato la prima versione per React in JavaScript nel 2015. Durante un discorso tecnico, <ref>{{Cita web|url=https://www.youtube.com/watch?v=7rDsRXj9-cU|sito=YouTube|dataaccessoaccesso=16 January 2018}}</ref> Christopher Chedeau ha spiegato che [[Facebook]]Meta stava già utilizzando React Native in produzione per la sua app di gestione degli annunci. <ref name="initial_rn_post">{{Cita web|url=https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/}}</ref>
== Implementazione ==
I principi di funzionamento di React Native sono fondamentalmente identici a [[React (web framework)|React]], tranne per il fatto che React Native non manipola il [[Document Object Model|DOM]] tramite il [[React (web framework)|Virtual DOM]]. Avviene infatti un'[[esecuzione in background]] che interpreta il [[JavaScript]] scritto dagli sviluppatori direttamente sul dispositivo finale che comunica con la piattaforma nativa tramite una [[serializzazione]] dei dati su un ponte [[asincrono]]. <ref>{{Cita web|url=https://tadeuzagallo.com/blog/react-native-bridge/|dataaccessoaccesso=16 January 2018}}</ref> <ref>{{Cita web|url=https://blog.uptech.team/how-we-build-apps-on-react-native-part-2-7-things-you-should-know-to-save-your-development-time-944533f81c03|dataaccessoaccesso=2019-11-06|urlmorto=sì}}</ref>
I componenti di React avvolgono il codice nativo esistente e interagiscono con le API native tramite la [[programmazione dichiarativa]] di React e il [[JavaScript]] .<ref>{{Cita web|url=https://www.xongolab.com/blog/how-react-native-can-empower-your-mobile-app-development-process/|dataaccessoaccesso=15 February 2019}}</ref>
Sebbene lo stile di React Native abbia una sintassi simile al [[CSS]], non utilizza [[HTML]] o [[CSS]] . <ref>{{Cita web|url=https://reactnative.dev/docs/style|dataaccessoaccesso=24 February 2021}}</ref> Invece, i messaggi dal [[Processo (informatica)|thread]] JavaScript vengono utilizzati per manipolare le visualizzazioni native. React Native consente inoltre agli sviluppatori di scrivere codice nativo in linguaggi come [[Java (linguaggio di programmazione)|Java]] o [[Kotlin (linguaggio di programmazione)|Kotlin]] per [[Android]] e [[Objective-C]] o [[Swift (linguaggio di programmazione)|Swift]] per [[iOS]], il che lo rende ancora più flessibile.
== Esempio di base ==
export default HelloWorldApp;
// Non inserire questa riga se stai creando un app React Native
AppRegistry.registerComponent('HelloWorld', () => HelloWorldApp);
</syntaxhighlight>
== Voci correlateNote ==
== Voci correlate ==
* [[Xamarin]]
* [[Apache Cordova]]
* [[Flutter (software)]]
== NoteCollegamenti esterni ==
* {{Collegamenti esterni}}
{{Portale| Informaticainformatica}} ▼
[[Categoria:Software multipiattaforma]]
[[Categoria:Sviluppo software]]
[[Categoria:Software con licenza MIT]]
|