{"id":9676,"date":"2020-02-04T10:34:49","date_gmt":"2020-02-04T09:34:49","guid":{"rendered":"https:\/\/blog.hostinger.io\/es-tutoriales\/?p=9676"},"modified":"2025-03-18T14:34:06","modified_gmt":"2025-03-18T13:34:06","slug":"que-es-react","status":"publish","type":"post","link":"\/es\/tutoriales\/que-es-react","title":{"rendered":"Qu\u00e9 es React: definici\u00f3n, caracter\u00edsticas y funcionamiento"},"content":{"rendered":"<p><a href=\"https:\/\/es.reactjs.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">ReactJS<\/a> es una de las librer&iacute;as m&aacute;s populares de <a href=\"\/es\/tutoriales\/que-es-javascript-introduccion-basica\/\">JavaScript<\/a> para el desarrollo de aplicaciones m&oacute;viles y web. Creada por Facebook, React contiene una colecci&oacute;n de fragmentos de c&oacute;digo JavaScript reutilizables utilizados para crear interfaces de usuario (UI) llamadas componentes.<\/p><p>Es importante se&ntilde;alar que ReactJS no es un framework de JavaScript. Esto porque s&oacute;lo es responsable de renderizar los componentes de la capa de vista de una aplicaci&oacute;n. React es una alternativa a frameworks como <a href=\"\/es\/tutoriales\/que-es-angular\">Angular<\/a> y <a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener\">Vue<\/a>, que permiten crear funciones complejas.<\/p><p>En este art&iacute;culo exploraremos las caracter&iacute;sticas de React, explicaremos c&oacute;mo funciona y repasaremos sus beneficios para los desarrolladores de front-end. Tambi&eacute;n cubriremos las diferencias entre ReactJS y React Native con respecto a sus funciones en la industria del desarrollo de aplicaciones web y m&oacute;viles.<\/p><p>Por &uacute;ltimo, hablaremos de los pasos para desplegar una aplicaci&oacute;n React en el hPanel de Hostinger.<\/p><p class=\"has-text-align-center\"><a href=\"https:\/\/assets.hostinger.com\/content\/ES-Web-Development-Glossary-for-Beginners.pdf\" target=\"_blank\" rel=\"noopener\">Descarga Glosario Completo de Desarrollo Web<\/a><br><\/p><h2 class=\"wp-block-heading\" id=\"h-caracteristicas-de-react\">Caracter&iacute;sticas de React<\/h2><p><span style=\"font-weight: 400\">React tiene algunas caracter&iacute;sticas principales que la hacen destacar de otras librer&iacute;as de JavaScript. En las siguientes secciones presentaremos estas caracter&iacute;sticas y te explicaremos c&oacute;mo contribuyen al desarrollo de aplicaciones m&oacute;viles y web.<\/span><\/p><h3 class=\"wp-block-heading\"><b>JSX<\/b><\/h3><p><span style=\"font-weight: 400\">JSX es una extensi&oacute;n de la sintaxis de JavaScript utilizada en la creaci&oacute;n de elementos de React. Los desarrolladores la emplean para incrustar c&oacute;digo <a href=\"\/es\/tutoriales\/codigos-html-cheat-sheet\">HTML<\/a> en objetos JavaScript. Ya que JSX acepta expresiones v&aacute;lidas de JavaScript e incrustaci&oacute;n de funciones, puede simplificar las estructuras de c&oacute;digo complejas.<\/span><\/p><p><span style=\"font-weight: 400\">Veamos un bloque de c&oacute;digo que muestra c&oacute;mo incrustar una expresi&oacute;n en JSX:<\/span><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const name = 'John Smith;\nconst element = h1&gt;Hola, {nombre}\/h1&gt;;\nReactDOM.render(\n element,\n document.getElementById('root')\n);<\/pre><p><span style=\"font-weight: 400\">En la segunda l&iacute;nea, llamamos a la variable <\/span><b>nombre <\/b><span style=\"font-weight: 400\">dentro de un elemento React poni&eacute;ndola dentro de las llaves.&nbsp;<\/span><\/p><p><span style=\"font-weight: 400\">Mientras tanto, la funci&oacute;n <\/span><b>ReactDOM.render() <\/b><span style=\"font-weight: 400\">renderiza el elemento React en el &aacute;rbol del Modelo de Objetos del Documento (DOM), describiendo la UI.<\/span><\/p><p><span style=\"font-weight: 400\">JSX tambi&eacute;n ayuda a combatir los ataques <\/span><b>Cross-Site Scripting<\/b><span style=\"font-weight: 400\"> (XSS). Por defecto, React DOM convierte los valores incrustados en JSX en cadenas antes de renderizarlos. Por consiguiente, terceros no pueden <\/span><a href=\"https:\/\/www.contrastsecurity.com\/knowledge-hub\/glossary\/code-injection\" target=\"_blank\" rel=\"noopener\"><b>inyectar c&oacute;digo extra<\/b><\/a><span style=\"font-weight: 400\"> a trav&eacute;s de la entrada del usuario a menos que est&eacute; expl&iacute;citamente escrito en la aplicaci&oacute;n.<\/span><\/p><p><span style=\"font-weight: 400\">M&aacute;s adelante en el art&iacute;culo, discutiremos detalladamente el papel de JSX en la creaci&oacute;n de componentes React.&nbsp;<\/span><\/p><h3 class=\"wp-block-heading\">Virtual DOM<\/h3><p><span style=\"font-weight: 400\">El Modelo de Objetos del Documento (DOM) presenta una p&aacute;gina web en una estructura de &aacute;rbol de datos. ReactJS almacena &aacute;rboles DOM virtuales en la memoria. Al hacerlo, React puede aplicar actualizaciones a partes espec&iacute;ficas del &aacute;rbol de datos, lo que es m&aacute;s r&aacute;pido que volver a renderizar la totalidad del &aacute;rbol DOM.<\/span><\/p><p><span style=\"font-weight: 400\">Cada vez que haya un cambio en los datos, ReactJS generar&aacute; un nuevo &aacute;rbol de DOM virtual y lo comparar&aacute; con el anterior para encontrar la forma m&aacute;s r&aacute;pida de implementar los cambios en el DOM real. Este proceso se conoce como <\/span><b>diffing<\/b><span style=\"font-weight: 400\">.<\/span><\/p><p><span style=\"font-weight: 400\">Al asegurarse de que la manipulaci&oacute;n de la interfaz de usuario s&oacute;lo afecta a secciones espec&iacute;ficas del &aacute;rbol real del DOM, renderizar la versi&oacute;n actualizada tarda menos tiempo y utiliza menos recursos. Esta pr&aacute;ctica beneficia enormemente a los proyectos grandes con una interacci&oacute;n intensa con el usuario.<\/span><\/p><h3 class=\"wp-block-heading\"><b>Componentes y Props<\/b><\/h3><p><span style=\"font-weight: 400\">ReactJS divide la interfaz de usuario en piezas aisladas y reutilizables de c&oacute;digo conocidas como componentes. Los componentes de React funcionan de forma similar a las funciones de JavaScript, ya que aceptan entradas arbitrarias denominadas propiedades o props.<\/span><\/p><p><span style=\"font-weight: 400\">Los elementos React devueltos determinan el aspecto de la interfaz de usuario en el lado del cliente. Este es un ejemplo de un componente de funci&oacute;n que devuelve un elemento React:<\/span><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function Welcome(props) {\n return h1&gt; Hola, {props.name}\/h1&gt;;\n}\n<\/pre><p><span style=\"font-weight: 400\">Es posible tener tantos componentes como sea necesario, sin saturar tu c&oacute;digo.&nbsp;<\/span><\/p><h3 class=\"wp-block-heading\"><b>Gesti&oacute;n de Estado<\/b><\/h3><p><span style=\"font-weight: 400\">Un estado es un objeto JavaScript que representa una parte de un componente. Cambia cada vez que un usuario interact&uacute;a con la aplicaci&oacute;n, renderizando una nueva interfaz de cliente para reflejar las modificaciones.<\/span><\/p><p><span style=\"font-weight: 400\">La gesti&oacute;n de estados se refiere a la pr&aacute;ctica de gestionar los estados de la aplicaci&oacute;n React. Incluye el almacenamiento de datos en librer&iacute;as de gesti&oacute;n de estados de terceros y la activaci&oacute;n del proceso de re-renderizaci&oacute;n cada vez que los datos cambian.<\/span><\/p><p><span style=\"font-weight: 400\">Una librer&iacute;a de gesti&oacute;n de estados facilita la comunicaci&oacute;n y el intercambio de datos entre los componentes. Actualmente existen varias librer&iacute;as de gesti&oacute;n de estados de terceros, siendo <\/span><b>Redux <\/b><span style=\"font-weight: 400\">y <\/span><b>Recoil <\/b><span style=\"font-weight: 400\">las dos m&aacute;s populares.<\/span><\/p><h4 class=\"wp-block-heading\"><b>Redux<\/b><\/h4><p><span style=\"font-weight: 400\">La librer&iacute;a de gesti&oacute;n de estado <\/span><a href=\"https:\/\/redux.js.org\/\" target=\"_blank\" rel=\"noopener\"><b>Redux<\/b><\/a><span style=\"font-weight: 400\"> tiene un <\/span><a href=\"https:\/\/redux.js.org\/api\/store\" target=\"_blank\" rel=\"noopener\"><b>almac&eacute;n<\/b><\/a><span style=\"font-weight: 400\"> centralizado que mantiene el &aacute;rbol de estado de una aplicaci&oacute;n predecible. La librer&iacute;a tambi&eacute;n reduce la inconsistencia de los datos al evitar que dos componentes actualicen el estado de la aplicaci&oacute;n simult&aacute;neamente.<\/span><\/p><p><span style=\"font-weight: 400\">La arquitectura de Redux admite el registro de errores para facilitar la depuraci&oacute;n y tiene un m&eacute;todo de organizaci&oacute;n de c&oacute;digo estricto, lo que simplifica el mantenimiento. Adem&aacute;s, cuenta con un gran n&uacute;mero de complementos y es compatible con todas las capas <\/span>de las interfaces de usuario. <\/p><p><span style=\"font-weight: 400\">Dicho esto, Redux es bastante complejo y, por lo tanto, no es &oacute;ptimo para aplicaciones peque&ntilde;as con una sola fuente de datos.<\/span><\/p><h4 class=\"wp-block-heading\"><b>Recoil<\/b><\/h4><p><a href=\"https:\/\/recoiljs.org\/\" target=\"_blank\" rel=\"noopener\"><b>Recoil<\/b><\/a><span style=\"font-weight: 400\"> es una biblioteca de gesti&oacute;n de estados de JavaScript lanzada por Facebook. Emplea funciones puras llamadas selectores para calcular los datos de las unidades actualizables del estado conocidas como <\/span><a href=\"https:\/\/recoiljs.org\/docs\/introduction\/core-concepts\/#atoms\" target=\"_blank\" rel=\"noopener\"><b>&aacute;tomos<\/b><\/a><span style=\"font-weight: 400\">. M&uacute;ltiples componentes pueden suscribirse al mismo &aacute;tomo y as&iacute; compartir un estado.<\/span><\/p><p><span style=\"font-weight: 400\">El uso de &aacute;tomos y selectores evita los estados redundantes, simplifica el c&oacute;digo y elimina las repeticiones excesivas de React y de cualquier componente hijo. Recoil es m&aacute;s recomendable que Redux para principiantes, ya que sus conceptos b&aacute;sicos son considerablemente m&aacute;s f&aacute;ciles de entender.<\/span><\/p><h3 class=\"wp-block-heading\"><b>Navegaci&oacute;n program&aacute;tica<\/b><\/h3><p><span style=\"font-weight: 400\">La navegaci&oacute;n program&aacute;tica se refiere a los casos en que las l&iacute;neas de c&oacute;digo crean una acci&oacute;n que redirige a un usuario. Por ejemplo, las acciones de inicio de sesi&oacute;n y de registro navegan program&aacute;ticamente a los usuarios a una nueva p&aacute;gina web.<\/span><\/p><p><a href=\"https:\/\/reactrouter.com\/\" target=\"_blank\" rel=\"noopener\"><b>React Router<\/b><\/a><span style=\"font-weight: 400\">, la librer&iacute;a est&aacute;ndar de React para el enrutamiento, proporciona m&uacute;ltiples formas de navegaci&oacute;n program&aacute;tica segura entre componentes, sin necesidad de que el usuario haga clic en un enlace.<\/span><\/p><p><span style=\"font-weight: 400\">El uso de un componente <\/span><b>Redirect <\/b><span style=\"font-weight: 400\">es el principal m&eacute;todo de navegaci&oacute;n program&aacute;tica, siendo <\/span><b>history.push() <\/b><span style=\"font-weight: 400\">otro enfoque.<\/span><\/p><p><span style=\"font-weight: 400\">Para resumir, el paquete React Router sincroniza la UI con la URL, lo que permite controlar el aspecto de las aplicaciones React sin depender de los enlaces.<\/span><\/p><h2 class=\"wp-block-heading\" id=\"h-por-que-utilizar-react\"><b>&iquest;Por qu&eacute; utilizar React?<\/b><\/h2><div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1576\" height=\"501\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/React-1.png\/public\" alt=\"Interfaz del sitio web de React\" class=\"wp-image-20593\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/React-1.png\/w=1576,fit=scale-down 1576w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/React-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/React-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/React-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/React-1.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/React-1.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1576px) 100vw, 1576px\" \/><\/figure><\/div><p><span style=\"font-weight: 400\">Cientos de grandes empresas de todo el mundo, como <\/span><a href=\"http:\/\/netflix.com\/\" target=\"_blank\" rel=\"noopener\"><b>Netflix<\/b><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"http:\/\/airbnb.com\/\" target=\"_blank\" rel=\"noopener\"><b>Airbnb<\/b><\/a><span style=\"font-weight: 400\"> y <\/span><a href=\"https:\/\/www.americanexpress.com\/\" target=\"_blank\" rel=\"noopener\"><b>American Express<\/b><\/a><span style=\"font-weight: 400\">, utilizan React para crear sus aplicaciones web. En las siguientes secciones, analizaremos las razones por las que tantos desarrolladores eligen ReactJS sobre sus competidores.<\/span><\/p><h3 class=\"wp-block-heading\"><b>1. F&aacute;cil de usar<\/b><\/h3><p><span style=\"font-weight: 400\">Los desarrolladores con conocimientos de JavaScript pueden aprender a utilizar React en muy poco tiempo, ya que se basa en JavaScript plano y en un enfoque basado en componentes. Es posible empezar a desarrollar aplicaciones basadas en la web con React tras solo un par de d&iacute;as de estudio.<\/span><\/p><p><span style=\"font-weight: 400\">Incluso si no est&aacute;s familiarizado con JavaScript, muchos sitios web ofrecen <\/span><a href=\"\/es\/tutoriales\/mejores-sitios-para-aprender-a-programar-gratis\"><b>lecciones de programaci&oacute;n<\/b><\/a><span style=\"font-weight: 400\"> gratuitas. Una vez que conozcas los fundamentos de JavaScript, lee sobre ReactJS para agilizar el proceso de desarrollo de front-end.<\/span><\/p><h3 class=\"wp-block-heading\"><b>2. Admite componentes Java reutilizables<\/b><\/h3><p><span style=\"font-weight: 400\">React te permite reutilizar componentes que han sido desarrollados en otras aplicaciones. Como React JS es de c&oacute;digo abierto, es posible pre-construir componentes, lo que reduce el tiempo de desarrollo de aplicaciones web complejas.<\/span><\/p><p><span style=\"font-weight: 400\">Adem&aacute;s, React permite anidar componentes entre otros para crear funciones complejas sin inflar el c&oacute;digo. Como cada componente tiene sus propios controles, es f&aacute;cil mantenerlos.<\/span><\/p><h3 class=\"wp-block-heading\"><b>3. Facilita la redacci&oacute;n de los componentes<\/b><\/h3><p><span style=\"font-weight: 400\">Gracias a la integraci&oacute;n de JSX, es m&aacute;s f&aacute;cil escribir componentes de React: los usuarios pueden crear objetos de JavaScript combinados con tipograf&iacute;a y etiquetas HTML. JSX tambi&eacute;n simplifica la renderizaci&oacute;n de m&uacute;ltiples funciones, lo que mantiene el c&oacute;digo sencillo sin reducir las capacidades de la aplicaci&oacute;n.<\/span><\/p><p><span style=\"font-weight: 400\">Aunque JSX no es la extensi&oacute;n sint&aacute;ctica m&aacute;s popular, ha demostrado su eficacia en el desarrollo de componentes especiales y aplicaciones din&aacute;micas.<\/span><\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"346\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/Create-React-App.png\/public\" alt=\"Interfaz de la aplicacion Create React App\" class=\"wp-image-20598\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/Create-React-App.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/Create-React-App.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/Create-React-App.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/Create-React-App.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/Create-React-App.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p><span style=\"font-weight: 400\">La herramienta oficial de interfaz de l&iacute;nea de comandos (CLI) de React, llamada <\/span><a href=\"https:\/\/create-react-app.dev\/\" target=\"_blank\" rel=\"noopener\"><b>Create React App<\/b><\/a><span style=\"font-weight: 400\">, agiliza a&uacute;n m&aacute;s el desarrollo de aplicaciones de una sola p&aacute;gina. Cuenta con un proceso moderno de configuraci&oacute;n de construcci&oacute;n con herramientas preconfiguradas y es excelente para aprender React JS.<\/span><\/p><h3 class=\"wp-block-heading\"><b>4. Alto rendimiento<\/b><\/h3><p><span style=\"font-weight: 400\">Como comentamos anteriormente, el virtual DOM permite a ReactJS actualizar el &aacute;rbol del DOM de la forma m&aacute;s eficiente posible. Al almacenar el virtual DOM en la memoria, React elimina el exceso de re-renderizaci&oacute;n que puede perjudicar el rendimiento.<\/span><\/p><p><span style=\"font-weight: 400\">Igualmente, el enlace de datos unidireccional de React entre elementos agiliza el proceso de depuraci&oacute;n. Cualquier modificaci&oacute;n realizada en los componentes hijos no afectar&aacute; a la estructura padre, lo que reduce el riesgo de errores.<\/span><\/p><h3 class=\"wp-block-heading\"><b>5. Compatible con SEO <\/b><\/h3><p><span style=\"font-weight: 400\">React JS puede mejorar la <\/span><a href=\"\/es\/tutoriales\/que-es-seo\"><b>optimizaci&oacute;n en los motores de b&uacute;squeda<\/b><\/a><span style=\"font-weight: 400\"> (SEO) de las aplicaciones web al aumentar su rendimiento. La implementaci&oacute;n del DOM virtual es uno de los factores que influyen en una mayor velocidad de las p&aacute;ginas.<\/span><\/p><p><span style=\"font-weight: 400\">Asimismo, React ayuda a los motores de b&uacute;squeda a navegar por las aplicaciones web mediante el renderizado del lado del servidor. Esto aborda uno de los problemas m&aacute;s importantes que tienen las p&aacute;ginas web con mucho JavaScript, ya que los motores de b&uacute;squeda suelen encontrarlas dif&iacute;ciles y lentas de rastrear.<\/span><\/p><h2 class=\"wp-block-heading\" id=\"h-como-funciona-react\"><b>&iquest;C&oacute;mo funciona React?<\/b><\/h2><p><span style=\"font-weight: 400\">Una de las mayores ventajas de usar React es que puedes <\/span><a href=\"\/es\/tutoriales\/insertar-javascript-en-html\/\"><b>infundir c&oacute;digo HTML con JavaScript<\/b><\/a><span style=\"font-weight: 400\">.<\/span><\/p><p><span style=\"font-weight: 400\">Los usuarios pueden crear una representaci&oacute;n de un nodo DOM declarando la funci&oacute;n <\/span><b>Element <\/b><span style=\"font-weight: 400\">en React. El siguiente c&oacute;digo contiene una combinaci&oacute;n de HTML y JavaScript:<\/span><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">React. createElement(\"div\", { className: \"rojo\" }, \"Texto Hijo\");\nReact. createElement(MyCounter, { count: 3 + 5 });<\/pre><p><span style=\"font-weight: 400\">Habr&aacute;s notado que la sintaxis del c&oacute;digo HTML anterior es similar a la de XML. Dicho esto, en lugar de utilizar la clase DOM tradicional, React utiliza <\/span><b>className<\/b><span style=\"font-weight: 400\">.<\/span><\/p><p><span style=\"font-weight: 400\">Las etiquetas JSX tienen un nombre, hijos y atributos. Los valores num&eacute;ricos y las expresiones deben escribirse entre llaves. Las comillas en los atributos JSX representan cadenas, de forma similar a JavaScript.<\/span><\/p><p><span style=\"font-weight: 400\">En la mayor&iacute;a de los casos, React se escribe utilizando JSX en lugar de JavaScript est&aacute;ndar para simplificar los componentes y mantener el c&oacute;digo limpio.<\/span><\/p><p><span style=\"font-weight: 400\">Aqu&iacute; hay un ejemplo de c&oacute;digo React escrito usando JSX:<\/span><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MyCounter count={3 + 5} \/&gt;;\nvar GameScores = {jugador1: 2,jugador2: 5};\nDashboardUnit data-index=\"2\"&gt;\nh1&gt; Scores\/h1&gt; Scoreboard className=\"results\" scores={GameScores} \/&gt;\n\/DashboardUnit&gt;;\n<\/pre><p><span style=\"font-weight: 400\">A continuaci&oacute;n, se desglosan las etiquetas HTML anteriores:<\/span><\/p><ul class=\"wp-block-list\">\n<li><b>MyCounter: <\/b><span style=\"font-weight: 400\">representa una variable llamada &ldquo;count&rdquo; cuyo valor es una expresi&oacute;n num&eacute;rica.<\/span><\/li>\n\n\n\n<li><b>GameScores: <\/b><span style=\"font-weight: 400\">es un objeto literal que tiene dos pares de valores prop.&nbsp;<\/span><\/li>\n\n\n\n<li><b>DashboardUnit: <\/b><span style=\"font-weight: 400\">es el bloque XML que se renderiza en la p&aacute;gina.<\/span><\/li>\n\n\n\n<li><b>scores={GameScores}: <\/b><span style=\"font-weight: 400\">es el atributo scores. Obtiene su valor del objeto literal <\/span><b>GameScores <\/b><span style=\"font-weight: 400\">definido anteriormente.<\/span><\/li>\n<\/ul><p><span style=\"font-weight: 400\">Una aplicaci&oacute;n React suele tener un &uacute;nico nodo DOM ra&iacute;z. Al renderizar un elemento en el DOM cambiar&aacute; la interfaz de usuario de la p&aacute;gina.<\/span><\/p><p><span style=\"font-weight: 400\">Por ejemplo, el siguiente c&oacute;digo muestra &laquo;Hola Mundo&raquo; en la p&aacute;gina, convirtiendo el elemento en un nodo DOM llamado <\/span><b>root<\/b><span style=\"font-weight: 400\">.<\/span><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">div id=\"root\"&gt; \/div&gt;\nconst element = h1&gt; Hola, mundo\/h1&gt;;\nReactDOM. render(element, document. getElementById('root'));<\/pre><p><span style=\"font-weight: 400\">Siempre que un componente de React devuelva un elemento, el virtual DOM<\/span> <span style=\"font-weight: 400\">actualizar&aacute; el DOM real para que coincida.<\/span><\/p><h2 class=\"wp-block-heading\" id=\"h-que-pasa-con-react-native\"><b>&iquest;Qu&eacute; pasa con React Native?<\/b><\/h2><p><a href=\"https:\/\/reactnative.dev\/\" target=\"_blank\" rel=\"noopener\"><b>React Native<\/b><\/a><span style=\"font-weight: 400\"> es un framework JavaScript de c&oacute;digo abierto construido sobre la librer&iacute;a React. Los desarrolladores lo utilizan para crear aplicaciones React multiplataforma para iOS y Android.<\/span><\/p><p><span style=\"font-weight: 400\">React Native utiliza interfaces de programaci&oacute;n de aplicaciones (APIs) nativas para renderizar componentes de interfaces de usuario m&oacute;vil en Objective-C (iOS) o Java (Android). Gracias a ello, los desarrolladores pueden crear componentes espec&iacute;ficos para cada plataforma y compartir el c&oacute;digo fuente en varias de ellas.<\/span><\/p><p><span style=\"font-weight: 400\">A pesar de tener similitudes, React Native es diferente de ReactJS. Aqu&iacute; una r&aacute;pida comparaci&oacute;n de React Native y ReactJS:<\/span><\/p><figure tabindex=\"0\" class=\"wp-block-table\"><table><tbody><tr><td><strong>ReactJS<\/strong><\/td><td><strong>React Native<\/strong><\/td><\/tr><tr><td>Una librer&iacute;a de JavaScript.<\/td><td>Un framework de JavaScript.<\/td><\/tr><tr><td>Ideal para construir aplicaciones web din&aacute;micas.<\/td><td>Da una sensaci&oacute;n nativa a la interfaz de usuario de las aplicaciones m&oacute;viles.<\/td><\/tr><tr><td>Utiliza el DOM virtual para renderizar el c&oacute;digo del navegador.<\/td><td>Utiliza las APIs nativas para renderizar el c&oacute;digo en los dispositivos m&oacute;viles.<\/td><\/tr><tr><td>Soporta CSS para crear animaciones.<\/td><td>Requiere la <strong>API animada<\/strong> para animar los componentes.<\/td><\/tr><tr><td>Utiliza etiquetas HTML.<\/td><td>No utiliza etiquetas HTML debido a la falta de soporte de DOM.<\/td><\/tr><tr><td>Utiliza CSS para el estilo.<\/td><td>Utiliza la hoja de estilos JS para el estilo.<\/td><\/tr><\/tbody><\/table><\/figure><h2 class=\"wp-block-heading\" id=\"h-como-desplegar-una-aplicacion-react-en-hostinger\">&iquest;C&oacute;mo desplegar una aplicaci&oacute;n React en Hostinger?<\/h2><p>Para que tu aplicaci&oacute;n React sea accesible a los usuarios en la web, necesitas desplegarla en un servidor. El <a href=\"\/es\/servidor-vps\">alojamiento VPS<\/a> de Hostinger viene con acceso root completo, un completo Administrador de archivos y el asistente Kodee AI. Tambi&eacute;n es f&aacute;cilmente escalable, lo que lo convierte en una excelente opci&oacute;n para alojar tus proyectos React.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/es\/servidor-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29287\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>Las siguientes instrucciones te mostrar&aacute;n c&oacute;mo desplegar una aplicaci&oacute;n React en <a href=\"\/es\/hosting-web\">Hostinger<\/a>. Aseg&uacute;rate de <a href=\"\/es\/tutoriales\/como-comprar-un-dominio\/\">tener un nombre de dominio<\/a> de antemano.<\/p><ol class=\"wp-block-list\">\n<li>Selecciona una plantilla VPS con sistema operativo Ubuntu 22.04 64bit.<\/li>\n\n\n\n<li>Utilizando SSH, con&eacute;ctate al sistema operativo:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">ssh root@tu_ip_servidor<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Instala un servidor node.js y un servidor proxy inverso y aseg&uacute;rate de haber eliminado Apache2:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo apt-get purge apache2*\n\ncurl -sL https:\/\/deb.nodesource.com\/setup_18.x -o nodesource_setup.sh\n\nsudo bash nodesource_setup.sh\n\nsudo apt update &amp;&amp; sudo apt upgrade -y\n\nsudo apt install -y nodejs nginx<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>Para que tu aplicaci&oacute;n Next.js funcione correctamente, crea un nuevo archivo de configuraci&oacute;n de Nginx:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo nano \/etc\/nginx\/sites-available\/nextjs<\/pre><ol start=\"5\" class=\"wp-block-list\">\n<li>A continuaci&oacute;n, pega esta configuraci&oacute;n en el archivo. Recuerda sustituir tu_ip_servidor por la direcci&oacute;n IP de tu VPS o tu nombre de dominio y guarda los cambios cuando hayas terminado.<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">server {\n  listen 80;\n  nombre_servidor tu_ip_servidor;\n  location \/ {\n    proxy_pass http:\/\/localhost:3000;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection 'upgrade';\n    proxy_set_header Host $host;\n    proxy_cache_bypass $http_upgrade;\n  }\n}<\/pre><ol start=\"6\" class=\"wp-block-list\">\n<li>Para activar la configuraci&oacute;n, tienes que crear un enlace simb&oacute;lico:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo ln -s \/etc\/nginx\/sites-available\/nextjs \/etc\/nginx\/sites-enabled\/<\/pre><ol start=\"7\" class=\"wp-block-list\">\n<li>Reinicia Nginx con este comando:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo service nginx restart<\/pre><ol start=\"8\" class=\"wp-block-list\">\n<li>Sigue los pasos y crea una nueva aplicaci&oacute;n Next.js:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd \/var\/www\n\nnpx create-next-app@latest nextjs<\/pre><ol start=\"9\" class=\"wp-block-list\">\n<li>Dir&iacute;gete al directorio de la aplicaci&oacute;n Next.js:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd nextjs<\/pre><p>Si eres usuario de Hostinger VPS, tambi&eacute;n puedes pedir <strong>a Kodee<\/strong> que compruebe tu configuraci&oacute;n actual de NGINX. Simplemente pregunta: &laquo;&iquest;Puedes verificar la configuraci&oacute;n actual de NGINX en busca de errores?&raquo; as&iacute;:<\/p><figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"665\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/caso-uso-kodee.png\/public\" alt=\"Ejemplo de uso de Kodee\" class=\"wp-image-46175\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/caso-uso-kodee.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/caso-uso-kodee.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/caso-uso-kodee.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/02\/caso-uso-kodee.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><ol start=\"10\" class=\"wp-block-list\">\n<li>Luego, instala las dependencias de la aplicaci&oacute;n:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">npm install<\/pre><ol start=\"11\" class=\"wp-block-list\">\n<li>Construye tu aplicaci&oacute;n Next.js con este comando:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">npm run build<\/pre><ol start=\"12\" class=\"wp-block-list\">\n<li>Una vez que hayas terminado, inicia tu aplicaci&oacute;n Next.js con el siguiente mensaje:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">npm start<\/pre><p>Tu aplicaci&oacute;n Next.js est&aacute; ahora activa y accesible a trav&eacute;s de tu nombre de dominio o direcci&oacute;n IP del VPS.<\/p><p>Utiliza un gestor de procesos como PM2 para reiniciar autom&aacute;ticamente tu aplicaci&oacute;n tras un reinicio del servidor o una ca&iacute;da. PM2 tambi&eacute;n mantiene tu aplicaci&oacute;n Next.js ejecut&aacute;ndose en segundo plano en tu VPS. Instala PM2 as&iacute;:<\/p><ol class=\"wp-block-list\">\n<li> Ejecuta el siguiente comando en tu VPS:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd ~\n\nsudo npm install -g pm2<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li> Ve al directorio de la aplicaci&oacute;n Next.js:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd \/var\/www\/nextjs<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Utiliza PM2 para iniciar tu aplicaci&oacute;n Next.js:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">pm2 start npm --name \"nextjs\" -- start<\/pre><p>Aseg&uacute;rate de que PM2 se inicia al arrancar. Utiliza este comando para generar un script que podr&aacute;s copiar y pegar en tu terminal:<\/p><pre class=\"wp-block-preformatted\">pm2 startup<\/pre><p>Guarda todos los procesos PM2 actuales con este comando:<\/p><pre class=\"wp-block-preformatted\">pm2 save<\/pre><h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi&oacute;n<\/h2><p>ReactJS es una librer&iacute;a robusta de JavaScript utilizada en el desarrollo de aplicaciones web din&aacute;micas. Hace que la codificaci&oacute;n de JavaScript sea m&aacute;s sencilla, mejora el rendimiento y el SEO de tu aplicaci&oacute;n, entre otras ventajas.<\/p><p>ReactJS ayuda a agilizar el proceso de depuraci&oacute;n y reduce el riesgo de errores mediante la vinculaci&oacute;n de datos en un solo sentido.<\/p><p>A continuaci&oacute;n, un resumen de las ventajas de usar React JS:<\/p><ul class=\"wp-block-list\">\n<li>Es f&aacute;cil de usar y aprender, con muchas lecciones de codificaci&oacute;n disponibles en l&iacute;nea.<\/li>\n\n\n\n<li>Admite componentes reutilizables, lo que reduce el tiempo de desarrollo.<\/li>\n\n\n\n<li>JSX facilita la codificaci&oacute;n y la renderizaci&oacute;n de elementos.<\/li>\n\n\n\n<li>El DOM virtual elimina el re-renderizado excesivo, asegurando el alto rendimiento de tu aplicaci&oacute;n web.&nbsp;<\/li>\n\n\n\n<li>React ayuda a los motores de b&uacute;squeda a rastrear tu aplicaci&oacute;n web, impulsando tu SEO.<\/li>\n<\/ul><p>Esperamos que la informaci&oacute;n de este art&iacute;culo te haya ayudado a entender qu&eacute; es React JS y sus funciones en el desarrollo web. Si tienes alg&uacute;n comentario o pregunta, d&eacute;jala en la secci&oacute;n de comentarios de abajo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ReactJS es una de las librer&iacute;as m&aacute;s populares de JavaScript para el desarrollo de aplicaciones m&oacute;viles y web. Creada por Facebook, React contiene una colecci&oacute;n de fragmentos de c&oacute;digo JavaScript reutilizables utilizados para crear interfaces de usuario (UI) llamadas componentes. Es importante se&ntilde;alar que ReactJS no es un framework de JavaScript. Esto porque s&oacute;lo es [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/es\/tutoriales\/que-es-react\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":138,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"Qu\u00e9 es React: definici\u00f3n, caracter\u00edsticas y funcionamiento","rank_math_description":"React es quiz\u00e1s la mejor librer\u00eda de JavaScript en la actualidad. Echa un vistazo a este art\u00edculo y aprende qu\u00e9 es React y c\u00f3mo funciona.","rank_math_focus_keyword":"qu\u00e9 es react","footnotes":""},"categories":[8284],"tags":[12007],"class_list":["post-9676","post","type-post","status-publish","format-standard","hentry","category-glosario","tag-que-es-react"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/what-is-react","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/o-que-e-react-javascript","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/quest-ce-que-react","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/que-es-react","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/apa-itu-react","default":0},{"locale":"de-DE","link":"https:\/\/www.hostinger.com\/de\/tutorials\/was-ist-react","default":0},{"locale":"it-IT","link":"https:\/\/www.hostinger.com\/it\/tutorial\/cose-react","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/what-is-react","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/what-is-react","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/what-is-react","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/que-es-react","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/que-es-react","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/que-es-react","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/o-que-e-react-javascript","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/what-is-react","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/what-is-react","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/what-is-react","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/what-is-react","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/9676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/users\/138"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/comments?post=9676"}],"version-history":[{"count":16,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/9676\/revisions"}],"predecessor-version":[{"id":46176,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/9676\/revisions\/46176"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/media?parent=9676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/categories?post=9676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/tags?post=9676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}