1650441600
WooCommerce es una plataforma popular que puede usar para configurar su propia tienda de comercio electrónico. Lo hace sin tener que codificar toda la aplicación, lo cual es posible gracias al uso de sistemas de administración de contenido (CMS) como WordPress. WordPress lo ayuda a crear hermosas tiendas en línea que están bien distribuidas, desde mostrar productos, administrar carritos y ordenar y finalizar el proceso de pago. Puede usar complementos y otros recursos para configurar todo de forma rápida y sin esfuerzo.
WordPress puede ejecutarse como un monolito; su back-end y front-end están integrados. Sin embargo, WordPress también puede ejecutarse como un CMS sin cabeza, en el que el backend y el frontend están desacoplados y se ejecutan individualmente. Esto les da a los desarrolladores el poder de flexibilidad para decidir cómo mostrar sus servicios.
WordPress WooCommerce permite a los desarrolladores generar API RESTful para consumir una tienda de comercio electrónico en diferentes canales. Esto significa que puede crear una aplicación móvil interactiva que permita a los usuarios interactuar con el mismo conjunto de datos de WooCommerce en sus sitios de WordPress.
La ventaja de esto es que consume los datos sin volver a crear su contenido inicial. Esto también le permite mejorar el rendimiento del canal de entrega. Usted eligió los canales rápidos, eficientes, escalables y más accesibles que mejor se adaptan a la entrega de contenido.
En este artículo, crearemos una aplicación de compras React Native que muestra una lista de productos de un back-end de WordPress WooCommerce. También integraremos las funcionalidades del carrito utilizando la API de contexto React Native como herramienta de gestión de estado.
Para seguir este tutorial, asegúrese de tener lo siguiente:
Asegúrese de que su dominio de WordPress esté habilitado para SSL. Consulte esta guía y aprenda cómo configurar SSL para sitios de WordPress. Sin embargo, con fines de desarrollo, y en caso de que su WordPress se ejecute localmente o carezca de SSL, crearemos un pequeño microservicio Node.js que le permitirá acceder a WooCommerce WordPress sin SSL.
Una vez que su sitio de WordPress esté listo y funcionando, vaya a su panel de administración de WordPress. Busque WooCommerce en la página Agregar nuevo en el menú Complementos . Luego instálalo y actívalo.
WooCommerce no tiene productos en la instalación, por lo que agregaremos nuevos productos que se ajusten a la aplicación que queremos crear. Navegue al menú de la barra lateral de WordPress y acceda a las pestañas Productos , luego Todos los productos .
Puede optar por agregar nuevos productos personalizados propios. En este caso, importaremos una lista de productos. Puede acceder a ellos desde esta página y descargar el archivo CSV. O, si tiene una lista existente de productos, también puede importarlos.
Una vez que importe el archivo, haga clic en continuar para importar todas las asignaciones de columnas. Luego, ejecute el importador y espere hasta que WooCommerce procese los artículos por usted. Ahora puede continuar y ver sus productos.
Ahora generemos una API para consumir este producto usando React Native. Vaya a la barra lateral de WordPress y navegue a la configuración de WooCommerce.
Vaya a Avanzado y haga clic en la configuración de la API REST .
Continúe con Agregar clave . Esto generará claves que le permitirán acceder a su tienda fuera de WordPress. Continúe y agregue la descripción clave y el permiso. En este tutorial, queremos leer los productos de WooCommerce, así que asegúrese de que esté seleccionado el permiso Leer .
Una vez hecho esto, haga clic en el botón Generar clave API . Esto generará una clave de consumidor y un secreto de consumidor para su tienda. Asegúrese de copiar estas claves y guardarlas en un lugar seguro.
Finalmente, necesitamos habilitar la API REST heredada. Vaya a la configuración avanzada de WooCommerce y haga clic en la API heredada , actívela y guarde los cambios como se muestra a continuación.
Antes de proceder a configurar toda la aplicación React Native, es recomendable primero probar si la API está funcionando. Para hacer esto, haremos solicitudes básicas a localhost usando Postman.
Aquí enviaremos una solicitud GET básica que debería responder con una lista de productos configurada en WordPress WooCommerce. Para hacer esto, usaremos la URL wp-json/wc/v2/products
y la asignaremos al dominio que ejecuta la aplicación de WordPress. Por ejemplo, https://logrocket.com/wp-json/wc/v2/products
. Así que continúe y modifique su punto final de URL en función de su servidor o nombre de dominio.
Abra Postman y envíe una solicitud GET al punto final de la URL
Una vez que envíe la solicitud, se le pedirá que agregue los detalles de la autorización. Para hacerlo, vaya a la pestaña Autorización y seleccione Autenticación básica . Ingrese su clave de consumidor de WooCommerce como nombre de usuario y la clave secreta de consumidor como contraseña.
Además, para evitar problemas de conexión, asegúrese de desactivar la verificación SSL de Postman. Puede hacer esto en la configuración de Postman y verificar que la verificación del certificado SSL esté desactivada.
Una vez hecho esto, envíe su solicitud GET a su terminal. Esto le dará una respuesta con la lista de productos en la tienda de WordPress WooCommerce.
WooCommerce está listo y la API REST está funcionando. Ahora podemos sumergirnos y crear una aplicación móvil de comercio electrónico con React Native y WooCommerce.
Como explicamos anteriormente, necesitamos crear un microservicio básico de Node.js para procesar solicitudes en sitios no habilitados para SSL.
Primero, cree un directorio donde desee que su aplicación esté activa. Dentro de ese directorio, cree un directorio diferente y asígnele el nombre woo_commerce_server_api
. Abra la línea de comando y cambie el directorio a woo_commerce_server_api
. Luego, inicialice el proyecto Node.js con las configuraciones predeterminadas ejecutando el siguiente comando:
npm init -y
El microservicio se encargará de obtener los datos de la tienda WooCommerce. Por lo tanto, necesitaremos instalar dos dependencias:
Instálelos ejecutando el siguiente comando:
npm i axios dotenv
Cree un index.js
y un .env
archivo dentro del directorio del proyecto. Dentro del .env
archivo, agregue lo siguiente:
consumer_key = "your_consumer_key"
consumer_secret = "your_consumer_secret"
Dentro del index.js
archivo, importe las dependencias necesarias:
const http = require('http');
const https = require('https');
const axios = require('axios');
require("dotenv").config();
A continuación, crea una instancia de un agente para evitar la verificación del certificado SSL:
const agent = new https.Agent({
rejectUnauthorized: false
});
Defina un puerto en el que ejecutar la aplicación:
const PORT = process.env.PORT || 5000;
Luego, cree el servidor HTTP y defina las funcionalidades para obtener los productos de la tienda en la URL específica:
const app = http.createServer((req, res) => {
if (req.url == "/products" && req.method == "GET") {
// get the token
let token = `${process.env.consumer_key}:${process.env.consumer_secret}`;
// get the base 64 encoded string.
let basic_auth = Buffer.from(token).toString('base64');
// Send request to get the data.
axios.default.get('https://18.117.135.240/wp-json/wc/v2/products?per_page=20', {
httpsAgent: agent,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + basic_auth
}
})
.then((response) => {
// Successful response
console.log("Successful request");
res.statusCode = response.status;
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(response.data));
})
.catch((error) => {
// Unsuccessful response
console.log("Unsuccessful request");
let message = new Error(error.message);
res.statusCode = 500;
res.end(JSON.stringify(message));
})
}
});
A continuación, inicie el servidor en el puerto especificado:
app.listen(PORT, () => console.log(`App started on PORT ${PORT}`));
En el package.json
archivo, en la scripts
sección, agregue el siguiente comando:
"scripts": {
"start": "node index.js"
},
Inicie el servidor de desarrollo. En este punto, su microservicio está en funcionamiento. Puede probar la funcionalidad enviando una GET
solicitud a http://localhost:5000/products
través del navegador o Postman.
Abra la terminal que apunta al directorio de su proyecto y ejecute el siguiente comando para inicializar la aplicación:
npx react-native init woocommerceshop
Una vez finalizado el proceso, proceda al directorio recién creado:
cd woocommerceshop
Si está ejecutando Windows, navegue hasta la android
carpeta, cree un local.properties
archivo e ingrese el sdk
directorio de la siguiente manera:
sdk.dir = relative_path_to_your_sdk
Finalmente, inicie el servidor de desarrollo:
npm run android
La aplicación predeterminada se iniciará en el dispositivo de depuración que esté utilizando, ya sea un dispositivo real o un emulador.
Primero, detenga el servidor de desarrollo en ejecución e instale las siguientes dependencias:
npm i @react-native-masked-view/masked-view @react-navigation/drawer @react-navigation/native react-native-gesture-handler react-native-reanimated react-native-safe-area-context react-native-screens
En su babel.config.js
archivo, agregue lo react-native-reanimated/plugin
siguiente:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: ['react-native-reanimated/plugin']
};
Edite la project.ext.react
propiedad android/app/build.gradle
para activar Hermes como tal:
project.ext.react = [
enableHermes: true, // <- edit
]
En android/app/src/main/java/com/woo_``ecommerce``_shop/MainApplication.java
, agregue las siguientes importaciones:
import com.facebook.react.bridge.JSIModulePackage; // <- add
import com.swmansion.reanimated.ReanimatedJSIModulePackage;// <- add
Ahora, bajo ReactNaitiveHost
la inicialización en la MainApplication
clase, agregue el complemento Reanimated
:
@Override
protected JSIModulePackage getJSIModulePackage() {
return new ReanimatedJSIModulePackage(); // <- add
}
Cree un src/screens
directorio dentro de la carpeta principal del proyecto React Native. Dentro de la screens
carpeta, cree dos archivos: Cart.js
para mostrar el carrito y Home.js
para mostrar los productos.
Edite estos archivos para mostrar un texto simple.
En el Home.js
archivo:
// Home.js
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
function Home() {
return (
<View style={styles.container}>
<Text>Home Screen</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}
});
export default Home;
En el Cart.js
archivo:
// Cart.js
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
function Cart() {
return (
<View style={styles.container}>
<Text>Cart Screen</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}
});
export default Cart;
A continuación, en App.js
, agregue las siguientes importaciones:
import {NavigationContainer} from '@react-navigation/native';
import {createDrawerNavigator} from '@react-navigation/drawer';
import HomeScreen from './src/screens/Home';
import CartScreen from './src/screens/Cart';
Y ahora podemos crear un navegador de cajones:
const Drawer = createDrawerNavigator();
Dentro de la App()
función, devuelve el NavigationContainer
con el navegador de cajones especificando las pantallas:
const App = () => {
return (
<NavigationContainer>
<Drawer.Navigator initialRouteName='Home'>
<Drawer.Screen name="Home" component={HomeScreen} />
<Drawer.Screen name="Cart" component={CartScreen} />
</Drawer.Navigator>
</NavigationContainer>
);
};
Inicie el servidor de desarrollo para probar si el cajón está funcionando. Su aplicación debe verse similar a las imágenes a continuación.
La pantalla de inicio:
La pantalla del carrito:
En el directorio de la aplicación, navegue hasta la src
carpeta creada en el paso anterior. Crear un store
y un constants
directorios.
Dentro del constants
directorio, crea un index.js
archivo y agrega las siguientes líneas de código:
let constants = {
url : "http://ip_address:5000/products"
// URL of the micro-service
}
export default constants;
Asegúrese de reemplazar ip_address
con la dirección IP local de su computadora.
Dentro del store
directorio, crea un context.js
archivo. En el archivo, agregue los siguientes bloques de código.
Primero, importe las dependencias necesarias:
import React from 'react';
import {createContext,useState,useEffect} from 'react';
import constants from '../constants';
import axios from 'axios';
Luego, crea una instancia del contexto de la aplicación:
const AppContext = createContext();
A continuación, defina la función del proveedor de contexto de la aplicación:
const AppContextProvider = ({ children }) => {
// product's state
const [products, setProducts] = useState([]);
// cart's state
const [cart, setCart] = useState([]);
// loading's state
const [loading, setLoading] = useState(false);
useEffect(() => {
// start loading.
setLoading(true);
axios.get(constants.url)
.then(response => {
// set the products from the response.
setProducts(response.data);
})
// In case of an error, log it.
.catch(err => console.log(err));
// stop loading.
return setLoading(false);
}, [products, cart]);
// remove item from cart
const removeItem = (id) => {
// Filter item from cart
setCart(cart.filter(item => item.id !== id));
}
// return the provider with the defined properties.
return (
<AppContext.Provider value={{ products, setProducts, cart, setCart, removeItem, loading }}>
{children}
</AppContext.Provider>
)
}
Finalmente, exporte el contexto de la aplicación y el proveedor del contexto de la aplicación:
export {
AppContext,
AppContextProvider
}
Ahora, navegue hasta el App.js
archivo e importe el creado AppContextProvider
:
import {AppContextProvider} from './src/store/context';
Envuelva todos los elementos representados en el App()
con AppContextProvider
así:
const App = () => {
return (
<AppContextProvider>
<NavigationContainer>
<Drawer.Navigator initialRouteName='Home'>
<Drawer.Screen name="Home" component={HomeScreen} />
<Drawer.Screen name="Cart" component={CartScreen} />
</Drawer.Navigator>
</NavigationContainer>
</AppContextProvider>
);
};
Con eso, la aplicación se envuelve con una fuente de datos.
Debido a que aún no hemos instalado Axios , detenga el servidor de desarrollo y ejecute el siguiente comando para instalarlo:
npm i axios
Vamos a mostrar los productos enumerados en la tienda de WordPress WooCommerce. Navegue hasta el src
directorio y cree un components
directorio. Dentro, crea un Products.js
archivo e importa estas dependencias y módulos:
import React, { useContext } from 'react';
import { View, Text, StyleSheet, Button, Image } from 'react-native';
import { AppContext } from '../store/context';
Luego, crea una Products
función para representar los productos así:
function Products({ }) {
const { products, cart, setCart, loading } = useContext(AppContext); // from context
return (
<View style={styles.container}>
{
loading ? <Text>Loading...</Text> :
products.map(product => {
let already_in_cart = cart.find(item => item.id === product.id); // Check if item is already in cart
return ( // render the product card
<View key={product.id} style={styles.product}>
<Image source={{ uri: product.images[0].src.replace('https', 'http') }} style={styles.image} />
<Text>{product.name}</Text>
<Text>${product.price}</Text>
<Button
title={
already_in_cart ? "Added to cart" : "Add to cart"
}
onPress={
already_in_cart ? () => null :
() => { // add the item to cart
setCart([...cart, {
id: product.id,
name: product.name,
price: product.price,
quantity: 1
}]);
}
}
/>
</View>
)
})}
</View>
);
}
Agregue estos estilos para dar formato a los productos. Continúe y agregue lo siguiente StyleSheet
justo debajo de su Products
función:
// styles for the product card
const styles = StyleSheet.create({
image: {
width: 100,
height: 100,
borderRadius: 10
},
container: {
flex: 1,
display: 'flex',
flexDirection: 'row',
flexWrap: 'wrap',
},
product: {
width: 180,
height: 220,
backgroundColor: '#ccc',
alignItems: 'center',
justifyContent: 'center',
margin: 10
}
});
Finalmente, exporte la Products
función para que otros módulos puedan acceder a ella:
export default Products;
Mientras mostramos estos productos, debemos agregar un ScrollView
elemento que permita al usuario desplazarse por la lista de elementos de productos mostrados. Para hacerlo, navegue hasta el Home.js
archivo debajo de la screens
carpeta e impórtelo ScrollView
desde react-native
:
import {ScrollView} from 'react-native';
Luego, importe el Products
componente que creamos anteriormente:
import Products from '../components/Products';
Finalmente, renderice el Products
componente dentro ScrollView
:
function HomeScreen() {
return (
<View style={styles.container} >
<ScrollView>
<Products />
</ScrollView>
</View>
);
};
En este punto, debería poder ver sus productos. Su pantalla de inicio ahora debería mostrar los elementos así:
Aprendamos cómo mostrar los artículos en el carrito y eliminarlos. En su src/components
directorio, cree un Cart.js
archivo e importe las dependencias necesarias así:
import React, { useContext } from 'react';
import { View, Text, StyleSheet, Button } from 'react-native';
import { AppContext } from '../store/context';
Luego, define una Cart
función para representar el carrito:
function Cart() {
// from the context
const { cart, removeItem } = useContext(AppContext);
return (
<View style={styles.container}>
{
cart.length > 0 ?
// render a cart card.
cart.map(item => {
return (
<View key={item.id} style={styles.cart}>
<Text style={styles.text}>{item.name}</Text>
<Text style={styles.text}>${item.price}</Text>
<Text style={styles.text}>{item.quantity}</Text>
<Button title="Remove" onPress={() => removeItem(item.id)} />
</View>
)
}) : (
<Text style={styles.text}>Cart is empty</Text>
)
}
</View>
);
}
Agregue estos estilos para dar formato a los artículos del carrito. Continúe y agregue lo siguiente StyleSheet
justo debajo de su Cart
función:
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center'
},
text: {
fontSize: 15,
color: "#000"
},
cart: {
padding: 10,
backgroundColor: "#fff",
width: '90%',
borderRadius: 20,
margin: 10
}
});
Finalmente, exporte la Cart
función para que otros módulos puedan acceder a ella:
export default Cart;
Para habilitar ScrollView
los artículos del carrito, navegue por el Cart.js
archivo screens
e importe ScrollView
:
import {ScrollView} from 'react_native';
Luego importe el Cart
componente:
import Cart from '../components/Cart';
Dentro de la función de representación, represente el Cart
componente envuelto en el ScrollView
componente de la siguiente manera:
function CartScreen() {
return (
<View style={styles.container}>
<ScrollView>
<Cart />
</ScrollView>
</View>
);
}
Además, actualice el carrito container
y los text
estilos de la siguiente manera:
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
},
text: {
color: "#000"
}
});
En la pantalla de inicio, agregue varios artículos al carrito tocando el botón AGREGAR AL CARRITO , luego continúe con la pantalla del carrito. Sus artículos se enumerarán de manera similar a lo que se muestra en la foto.
También puede tocar Eliminar para eliminar cualquier artículo del carrito.
Debido a que algunas de las descripciones de los productos tendrán etiquetas HTML, necesitaremos instalar el paquete React Native HTMLView . Asegúrese de haber detenido el servidor de desarrollo antes de instalar:
npm i react-native-htmlview
Cuando finalice la instalación, en el src/screens
directorio, cree un Product.js
archivo. En este archivo, importe las dependencias y módulos necesarios:
import React, { useState, useContext } from 'react';
import { View, Text, StyleSheet, Image, TouchableOpacity, Button } from 'react-native';
import HTMLView from 'react-native-htmlview';
import { AppContext } from '../store/context';
A continuación, cree la Product
función para renderizar el producto:
function Product({ route, navigation }) {
// Get the dynamic product from the params.
const { product } = route.params;
// get the cart and the setcart from the application context
let { cart, setCart } = useContext(AppContext);
// check if item already in cart
let already_in_cart = cart.find(item => item.id === product.id);
// set the quantity
let [quantity, setQuantity] = useState(already_in_cart ? already_in_cart.quantity : 1);
return (
<View style={styles.container}>
<View style={styles.imageContainer}>
<Image source={{ uri: product.images[0].src.replace('https', 'http') }} style={styles.image} />
</View>
<Text style={styles.text}>
{product.name}
</Text>
<Text style={styles.text}>
${product.price}
</Text>
<HTMLView value={product.short_description} stylesheet={{
p: {
fontSize: 15,
color: '#000',
//textAlign:'center',
width: '100%',
padding: 10
}
}} />
<View style={styles.quantityContainer}>
<Text style={styles.text}>Quantity</Text>
<View style={styles.quantity}>
<TouchableOpacity onPress={() => quantity > 1 ? setQuantity(quantity - 1) : null}>
<Text style={styles.text}>-</Text>
</TouchableOpacity>
<Text style={styles.text}>{quantity}</Text>
<TouchableOpacity onPress={() => setQuantity(quantity + 1)}>
<Text style={styles.text}>+</Text>
</TouchableOpacity>
</View>
</View>
<View style={styles.buttonContainer}>
<Button onPress={() => {
already_in_cart ? setCart(cart.map(item => item.id === product.id ? { ...item, quantity: quantity } : item)) :
setCart([...cart, {
id: product.id,
name: product.name,
price: product.price,
quantity: quantity
}]);
navigation.navigate('Cart')
}} title={
already_in_cart ? "Update cart" : "Add to cart"
} />
</View>
</View>
);
}
Agregue algo de estilo para el producto:
const styles = StyleSheet.create({
container: {
flex: 1,
//alignItems:'center',
justifyContent: 'center',
},
imageContainer: {
//textAlign:'center',
width: '100%',
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
text: {
fontSize: 18,
color: '#000',
padding: 10
},
image: {
width: 200,
height: 200,
borderRadius: 10,
},
quantityContainer: {
display: 'flex',
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
padding: 10
},
quantity: {
display: 'flex',
flexDirection: 'row',
justifyContent: 'center',
alignItems: 'center',
},
buttonContainer: {
width: '100%',
padding: 10,
}
});
Y exportar la función del producto:
export default Product;
Ahora, debajo del App.js
archivo, importe el módulo que acabamos de crear:
import ProductScreen from './src/screens/Product';
Definiremos el módulo dentro del Drawer.Navigator
componente. Luego, dale estilo para que no se muestre en el cajón porque es dinámico:
<Drawer.Screen name="Product" component={ProductScreen} options={{
drawerItemStyle: {
display: "none"
}
}} />
En src/components/Products.js
, importar TouchableOpacity
desde react-native
:
import {TouchableOpacity} from 'react-native';
Al renderizar la imagen y el nombre del producto, envuelva cada uno de ellos con el TouchableOpacity
componente que pasa los datos dinámicos del producto:
<TouchableOpacity onPress={() => navigation.navigate('Product',{product})}>
<Image source={{uri:product.images[0].src.replace('https','http')}} style={styles.image}/>
</TouchableOpacity>
<TouchableOpacity onPress={() => navigation.navigate('Product',{product})}>
<Text>{product.name}</Text>
</TouchableOpacity>
En este punto, ¡todo está listo! En la página de inicio, haga clic en la imagen o el título de cualquier producto y debería ser redirigido a una nueva pantalla de un solo producto, como se muestra en la imagen a continuación.
WooCommerce es uno de los populares complementos de comercio electrónico de código abierto disponibles para WordPress. Le brinda la flexibilidad de configurar cualquier tienda que se le ocurra. La capacidad de WooCommerce para generar API para su tienda le permite seleccionar las plataformas ideales para llegar a varios usuarios.
En esta guía, aprendimos a usar WooCommerce en una aplicación móvil React Native, pero puede usar la misma API, desarrollar cualquier aplicación y ejecutarla en diferentes plataformas.
Sugeriría seguir adelante y agregar otros módulos, como una integración de pago y pago de su elección.
¡Espero que hayas encontrado esto util!
Si se atasca, consulte el código utilizado en este tutorial en GitHub .
Fuente: https://blog.logrocket.com/building-ecommerce-mobile-app-react-native-woocommerce/
#react-native #woocommerce #ecommerce
1598839687
If you are undertaking a mobile app development for your start-up or enterprise, you are likely wondering whether to use React Native. As a popular development framework, React Native helps you to develop near-native mobile apps. However, you are probably also wondering how close you can get to a native app by using React Native. How native is React Native?
In the article, we discuss the similarities between native mobile development and development using React Native. We also touch upon where they differ and how to bridge the gaps. Read on.
Let’s briefly set the context first. We will briefly touch upon what React Native is and how it differs from earlier hybrid frameworks.
React Native is a popular JavaScript framework that Facebook has created. You can use this open-source framework to code natively rendering Android and iOS mobile apps. You can use it to develop web apps too.
Facebook has developed React Native based on React, its JavaScript library. The first release of React Native came in March 2015. At the time of writing this article, the latest stable release of React Native is 0.62.0, and it was released in March 2020.
Although relatively new, React Native has acquired a high degree of popularity. The “Stack Overflow Developer Survey 2019” report identifies it as the 8th most loved framework. Facebook, Walmart, and Bloomberg are some of the top companies that use React Native.
The popularity of React Native comes from its advantages. Some of its advantages are as follows:
Are you wondering whether React Native is just another of those hybrid frameworks like Ionic or Cordova? It’s not! React Native is fundamentally different from these earlier hybrid frameworks.
React Native is very close to native. Consider the following aspects as described on the React Native website:
Due to these factors, React Native offers many more advantages compared to those earlier hybrid frameworks. We now review them.
#android app #frontend #ios app #mobile app development #benefits of react native #is react native good for mobile app development #native vs #pros and cons of react native #react mobile development #react native development #react native experience #react native framework #react native ios vs android #react native pros and cons #react native vs android #react native vs native #react native vs native performance #react vs native #why react native #why use react native
1650441600
WooCommerce es una plataforma popular que puede usar para configurar su propia tienda de comercio electrónico. Lo hace sin tener que codificar toda la aplicación, lo cual es posible gracias al uso de sistemas de administración de contenido (CMS) como WordPress. WordPress lo ayuda a crear hermosas tiendas en línea que están bien distribuidas, desde mostrar productos, administrar carritos y ordenar y finalizar el proceso de pago. Puede usar complementos y otros recursos para configurar todo de forma rápida y sin esfuerzo.
WordPress puede ejecutarse como un monolito; su back-end y front-end están integrados. Sin embargo, WordPress también puede ejecutarse como un CMS sin cabeza, en el que el backend y el frontend están desacoplados y se ejecutan individualmente. Esto les da a los desarrolladores el poder de flexibilidad para decidir cómo mostrar sus servicios.
WordPress WooCommerce permite a los desarrolladores generar API RESTful para consumir una tienda de comercio electrónico en diferentes canales. Esto significa que puede crear una aplicación móvil interactiva que permita a los usuarios interactuar con el mismo conjunto de datos de WooCommerce en sus sitios de WordPress.
La ventaja de esto es que consume los datos sin volver a crear su contenido inicial. Esto también le permite mejorar el rendimiento del canal de entrega. Usted eligió los canales rápidos, eficientes, escalables y más accesibles que mejor se adaptan a la entrega de contenido.
En este artículo, crearemos una aplicación de compras React Native que muestra una lista de productos de un back-end de WordPress WooCommerce. También integraremos las funcionalidades del carrito utilizando la API de contexto React Native como herramienta de gestión de estado.
Para seguir este tutorial, asegúrese de tener lo siguiente:
Asegúrese de que su dominio de WordPress esté habilitado para SSL. Consulte esta guía y aprenda cómo configurar SSL para sitios de WordPress. Sin embargo, con fines de desarrollo, y en caso de que su WordPress se ejecute localmente o carezca de SSL, crearemos un pequeño microservicio Node.js que le permitirá acceder a WooCommerce WordPress sin SSL.
Una vez que su sitio de WordPress esté listo y funcionando, vaya a su panel de administración de WordPress. Busque WooCommerce en la página Agregar nuevo en el menú Complementos . Luego instálalo y actívalo.
WooCommerce no tiene productos en la instalación, por lo que agregaremos nuevos productos que se ajusten a la aplicación que queremos crear. Navegue al menú de la barra lateral de WordPress y acceda a las pestañas Productos , luego Todos los productos .
Puede optar por agregar nuevos productos personalizados propios. En este caso, importaremos una lista de productos. Puede acceder a ellos desde esta página y descargar el archivo CSV. O, si tiene una lista existente de productos, también puede importarlos.
Una vez que importe el archivo, haga clic en continuar para importar todas las asignaciones de columnas. Luego, ejecute el importador y espere hasta que WooCommerce procese los artículos por usted. Ahora puede continuar y ver sus productos.
Ahora generemos una API para consumir este producto usando React Native. Vaya a la barra lateral de WordPress y navegue a la configuración de WooCommerce.
Vaya a Avanzado y haga clic en la configuración de la API REST .
Continúe con Agregar clave . Esto generará claves que le permitirán acceder a su tienda fuera de WordPress. Continúe y agregue la descripción clave y el permiso. En este tutorial, queremos leer los productos de WooCommerce, así que asegúrese de que esté seleccionado el permiso Leer .
Una vez hecho esto, haga clic en el botón Generar clave API . Esto generará una clave de consumidor y un secreto de consumidor para su tienda. Asegúrese de copiar estas claves y guardarlas en un lugar seguro.
Finalmente, necesitamos habilitar la API REST heredada. Vaya a la configuración avanzada de WooCommerce y haga clic en la API heredada , actívela y guarde los cambios como se muestra a continuación.
Antes de proceder a configurar toda la aplicación React Native, es recomendable primero probar si la API está funcionando. Para hacer esto, haremos solicitudes básicas a localhost usando Postman.
Aquí enviaremos una solicitud GET básica que debería responder con una lista de productos configurada en WordPress WooCommerce. Para hacer esto, usaremos la URL wp-json/wc/v2/products
y la asignaremos al dominio que ejecuta la aplicación de WordPress. Por ejemplo, https://logrocket.com/wp-json/wc/v2/products
. Así que continúe y modifique su punto final de URL en función de su servidor o nombre de dominio.
Abra Postman y envíe una solicitud GET al punto final de la URL
Una vez que envíe la solicitud, se le pedirá que agregue los detalles de la autorización. Para hacerlo, vaya a la pestaña Autorización y seleccione Autenticación básica . Ingrese su clave de consumidor de WooCommerce como nombre de usuario y la clave secreta de consumidor como contraseña.
Además, para evitar problemas de conexión, asegúrese de desactivar la verificación SSL de Postman. Puede hacer esto en la configuración de Postman y verificar que la verificación del certificado SSL esté desactivada.
Una vez hecho esto, envíe su solicitud GET a su terminal. Esto le dará una respuesta con la lista de productos en la tienda de WordPress WooCommerce.
WooCommerce está listo y la API REST está funcionando. Ahora podemos sumergirnos y crear una aplicación móvil de comercio electrónico con React Native y WooCommerce.
Como explicamos anteriormente, necesitamos crear un microservicio básico de Node.js para procesar solicitudes en sitios no habilitados para SSL.
Primero, cree un directorio donde desee que su aplicación esté activa. Dentro de ese directorio, cree un directorio diferente y asígnele el nombre woo_commerce_server_api
. Abra la línea de comando y cambie el directorio a woo_commerce_server_api
. Luego, inicialice el proyecto Node.js con las configuraciones predeterminadas ejecutando el siguiente comando:
npm init -y
El microservicio se encargará de obtener los datos de la tienda WooCommerce. Por lo tanto, necesitaremos instalar dos dependencias:
Instálelos ejecutando el siguiente comando:
npm i axios dotenv
Cree un index.js
y un .env
archivo dentro del directorio del proyecto. Dentro del .env
archivo, agregue lo siguiente:
consumer_key = "your_consumer_key"
consumer_secret = "your_consumer_secret"
Dentro del index.js
archivo, importe las dependencias necesarias:
const http = require('http');
const https = require('https');
const axios = require('axios');
require("dotenv").config();
A continuación, crea una instancia de un agente para evitar la verificación del certificado SSL:
const agent = new https.Agent({
rejectUnauthorized: false
});
Defina un puerto en el que ejecutar la aplicación:
const PORT = process.env.PORT || 5000;
Luego, cree el servidor HTTP y defina las funcionalidades para obtener los productos de la tienda en la URL específica:
const app = http.createServer((req, res) => {
if (req.url == "/products" && req.method == "GET") {
// get the token
let token = `${process.env.consumer_key}:${process.env.consumer_secret}`;
// get the base 64 encoded string.
let basic_auth = Buffer.from(token).toString('base64');
// Send request to get the data.
axios.default.get('https://18.117.135.240/wp-json/wc/v2/products?per_page=20', {
httpsAgent: agent,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + basic_auth
}
})
.then((response) => {
// Successful response
console.log("Successful request");
res.statusCode = response.status;
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(response.data));
})
.catch((error) => {
// Unsuccessful response
console.log("Unsuccessful request");
let message = new Error(error.message);
res.statusCode = 500;
res.end(JSON.stringify(message));
})
}
});
A continuación, inicie el servidor en el puerto especificado:
app.listen(PORT, () => console.log(`App started on PORT ${PORT}`));
En el package.json
archivo, en la scripts
sección, agregue el siguiente comando:
"scripts": {
"start": "node index.js"
},
Inicie el servidor de desarrollo. En este punto, su microservicio está en funcionamiento. Puede probar la funcionalidad enviando una GET
solicitud a http://localhost:5000/products
través del navegador o Postman.
Abra la terminal que apunta al directorio de su proyecto y ejecute el siguiente comando para inicializar la aplicación:
npx react-native init woocommerceshop
Una vez finalizado el proceso, proceda al directorio recién creado:
cd woocommerceshop
Si está ejecutando Windows, navegue hasta la android
carpeta, cree un local.properties
archivo e ingrese el sdk
directorio de la siguiente manera:
sdk.dir = relative_path_to_your_sdk
Finalmente, inicie el servidor de desarrollo:
npm run android
La aplicación predeterminada se iniciará en el dispositivo de depuración que esté utilizando, ya sea un dispositivo real o un emulador.
Primero, detenga el servidor de desarrollo en ejecución e instale las siguientes dependencias:
npm i @react-native-masked-view/masked-view @react-navigation/drawer @react-navigation/native react-native-gesture-handler react-native-reanimated react-native-safe-area-context react-native-screens
En su babel.config.js
archivo, agregue lo react-native-reanimated/plugin
siguiente:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: ['react-native-reanimated/plugin']
};
Edite la project.ext.react
propiedad android/app/build.gradle
para activar Hermes como tal:
project.ext.react = [
enableHermes: true, // <- edit
]
En android/app/src/main/java/com/woo_``ecommerce``_shop/MainApplication.java
, agregue las siguientes importaciones:
import com.facebook.react.bridge.JSIModulePackage; // <- add
import com.swmansion.reanimated.ReanimatedJSIModulePackage;// <- add
Ahora, bajo ReactNaitiveHost
la inicialización en la MainApplication
clase, agregue el complemento Reanimated
:
@Override
protected JSIModulePackage getJSIModulePackage() {
return new ReanimatedJSIModulePackage(); // <- add
}
Cree un src/screens
directorio dentro de la carpeta principal del proyecto React Native. Dentro de la screens
carpeta, cree dos archivos: Cart.js
para mostrar el carrito y Home.js
para mostrar los productos.
Edite estos archivos para mostrar un texto simple.
En el Home.js
archivo:
// Home.js
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
function Home() {
return (
<View style={styles.container}>
<Text>Home Screen</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}
});
export default Home;
En el Cart.js
archivo:
// Cart.js
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
function Cart() {
return (
<View style={styles.container}>
<Text>Cart Screen</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}
});
export default Cart;
A continuación, en App.js
, agregue las siguientes importaciones:
import {NavigationContainer} from '@react-navigation/native';
import {createDrawerNavigator} from '@react-navigation/drawer';
import HomeScreen from './src/screens/Home';
import CartScreen from './src/screens/Cart';
Y ahora podemos crear un navegador de cajones:
const Drawer = createDrawerNavigator();
Dentro de la App()
función, devuelve el NavigationContainer
con el navegador de cajones especificando las pantallas:
const App = () => {
return (
<NavigationContainer>
<Drawer.Navigator initialRouteName='Home'>
<Drawer.Screen name="Home" component={HomeScreen} />
<Drawer.Screen name="Cart" component={CartScreen} />
</Drawer.Navigator>
</NavigationContainer>
);
};
Inicie el servidor de desarrollo para probar si el cajón está funcionando. Su aplicación debe verse similar a las imágenes a continuación.
La pantalla de inicio:
La pantalla del carrito:
En el directorio de la aplicación, navegue hasta la src
carpeta creada en el paso anterior. Crear un store
y un constants
directorios.
Dentro del constants
directorio, crea un index.js
archivo y agrega las siguientes líneas de código:
let constants = {
url : "http://ip_address:5000/products"
// URL of the micro-service
}
export default constants;
Asegúrese de reemplazar ip_address
con la dirección IP local de su computadora.
Dentro del store
directorio, crea un context.js
archivo. En el archivo, agregue los siguientes bloques de código.
Primero, importe las dependencias necesarias:
import React from 'react';
import {createContext,useState,useEffect} from 'react';
import constants from '../constants';
import axios from 'axios';
Luego, crea una instancia del contexto de la aplicación:
const AppContext = createContext();
A continuación, defina la función del proveedor de contexto de la aplicación:
const AppContextProvider = ({ children }) => {
// product's state
const [products, setProducts] = useState([]);
// cart's state
const [cart, setCart] = useState([]);
// loading's state
const [loading, setLoading] = useState(false);
useEffect(() => {
// start loading.
setLoading(true);
axios.get(constants.url)
.then(response => {
// set the products from the response.
setProducts(response.data);
})
// In case of an error, log it.
.catch(err => console.log(err));
// stop loading.
return setLoading(false);
}, [products, cart]);
// remove item from cart
const removeItem = (id) => {
// Filter item from cart
setCart(cart.filter(item => item.id !== id));
}
// return the provider with the defined properties.
return (
<AppContext.Provider value={{ products, setProducts, cart, setCart, removeItem, loading }}>
{children}
</AppContext.Provider>
)
}
Finalmente, exporte el contexto de la aplicación y el proveedor del contexto de la aplicación:
export {
AppContext,
AppContextProvider
}
Ahora, navegue hasta el App.js
archivo e importe el creado AppContextProvider
:
import {AppContextProvider} from './src/store/context';
Envuelva todos los elementos representados en el App()
con AppContextProvider
así:
const App = () => {
return (
<AppContextProvider>
<NavigationContainer>
<Drawer.Navigator initialRouteName='Home'>
<Drawer.Screen name="Home" component={HomeScreen} />
<Drawer.Screen name="Cart" component={CartScreen} />
</Drawer.Navigator>
</NavigationContainer>
</AppContextProvider>
);
};
Con eso, la aplicación se envuelve con una fuente de datos.
Debido a que aún no hemos instalado Axios , detenga el servidor de desarrollo y ejecute el siguiente comando para instalarlo:
npm i axios
Vamos a mostrar los productos enumerados en la tienda de WordPress WooCommerce. Navegue hasta el src
directorio y cree un components
directorio. Dentro, crea un Products.js
archivo e importa estas dependencias y módulos:
import React, { useContext } from 'react';
import { View, Text, StyleSheet, Button, Image } from 'react-native';
import { AppContext } from '../store/context';
Luego, crea una Products
función para representar los productos así:
function Products({ }) {
const { products, cart, setCart, loading } = useContext(AppContext); // from context
return (
<View style={styles.container}>
{
loading ? <Text>Loading...</Text> :
products.map(product => {
let already_in_cart = cart.find(item => item.id === product.id); // Check if item is already in cart
return ( // render the product card
<View key={product.id} style={styles.product}>
<Image source={{ uri: product.images[0].src.replace('https', 'http') }} style={styles.image} />
<Text>{product.name}</Text>
<Text>${product.price}</Text>
<Button
title={
already_in_cart ? "Added to cart" : "Add to cart"
}
onPress={
already_in_cart ? () => null :
() => { // add the item to cart
setCart([...cart, {
id: product.id,
name: product.name,
price: product.price,
quantity: 1
}]);
}
}
/>
</View>
)
})}
</View>
);
}
Agregue estos estilos para dar formato a los productos. Continúe y agregue lo siguiente StyleSheet
justo debajo de su Products
función:
// styles for the product card
const styles = StyleSheet.create({
image: {
width: 100,
height: 100,
borderRadius: 10
},
container: {
flex: 1,
display: 'flex',
flexDirection: 'row',
flexWrap: 'wrap',
},
product: {
width: 180,
height: 220,
backgroundColor: '#ccc',
alignItems: 'center',
justifyContent: 'center',
margin: 10
}
});
Finalmente, exporte la Products
función para que otros módulos puedan acceder a ella:
export default Products;
Mientras mostramos estos productos, debemos agregar un ScrollView
elemento que permita al usuario desplazarse por la lista de elementos de productos mostrados. Para hacerlo, navegue hasta el Home.js
archivo debajo de la screens
carpeta e impórtelo ScrollView
desde react-native
:
import {ScrollView} from 'react-native';
Luego, importe el Products
componente que creamos anteriormente:
import Products from '../components/Products';
Finalmente, renderice el Products
componente dentro ScrollView
:
function HomeScreen() {
return (
<View style={styles.container} >
<ScrollView>
<Products />
</ScrollView>
</View>
);
};
En este punto, debería poder ver sus productos. Su pantalla de inicio ahora debería mostrar los elementos así:
Aprendamos cómo mostrar los artículos en el carrito y eliminarlos. En su src/components
directorio, cree un Cart.js
archivo e importe las dependencias necesarias así:
import React, { useContext } from 'react';
import { View, Text, StyleSheet, Button } from 'react-native';
import { AppContext } from '../store/context';
Luego, define una Cart
función para representar el carrito:
function Cart() {
// from the context
const { cart, removeItem } = useContext(AppContext);
return (
<View style={styles.container}>
{
cart.length > 0 ?
// render a cart card.
cart.map(item => {
return (
<View key={item.id} style={styles.cart}>
<Text style={styles.text}>{item.name}</Text>
<Text style={styles.text}>${item.price}</Text>
<Text style={styles.text}>{item.quantity}</Text>
<Button title="Remove" onPress={() => removeItem(item.id)} />
</View>
)
}) : (
<Text style={styles.text}>Cart is empty</Text>
)
}
</View>
);
}
Agregue estos estilos para dar formato a los artículos del carrito. Continúe y agregue lo siguiente StyleSheet
justo debajo de su Cart
función:
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center'
},
text: {
fontSize: 15,
color: "#000"
},
cart: {
padding: 10,
backgroundColor: "#fff",
width: '90%',
borderRadius: 20,
margin: 10
}
});
Finalmente, exporte la Cart
función para que otros módulos puedan acceder a ella:
export default Cart;
Para habilitar ScrollView
los artículos del carrito, navegue por el Cart.js
archivo screens
e importe ScrollView
:
import {ScrollView} from 'react_native';
Luego importe el Cart
componente:
import Cart from '../components/Cart';
Dentro de la función de representación, represente el Cart
componente envuelto en el ScrollView
componente de la siguiente manera:
function CartScreen() {
return (
<View style={styles.container}>
<ScrollView>
<Cart />
</ScrollView>
</View>
);
}
Además, actualice el carrito container
y los text
estilos de la siguiente manera:
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
},
text: {
color: "#000"
}
});
En la pantalla de inicio, agregue varios artículos al carrito tocando el botón AGREGAR AL CARRITO , luego continúe con la pantalla del carrito. Sus artículos se enumerarán de manera similar a lo que se muestra en la foto.
También puede tocar Eliminar para eliminar cualquier artículo del carrito.
Debido a que algunas de las descripciones de los productos tendrán etiquetas HTML, necesitaremos instalar el paquete React Native HTMLView . Asegúrese de haber detenido el servidor de desarrollo antes de instalar:
npm i react-native-htmlview
Cuando finalice la instalación, en el src/screens
directorio, cree un Product.js
archivo. En este archivo, importe las dependencias y módulos necesarios:
import React, { useState, useContext } from 'react';
import { View, Text, StyleSheet, Image, TouchableOpacity, Button } from 'react-native';
import HTMLView from 'react-native-htmlview';
import { AppContext } from '../store/context';
A continuación, cree la Product
función para renderizar el producto:
function Product({ route, navigation }) {
// Get the dynamic product from the params.
const { product } = route.params;
// get the cart and the setcart from the application context
let { cart, setCart } = useContext(AppContext);
// check if item already in cart
let already_in_cart = cart.find(item => item.id === product.id);
// set the quantity
let [quantity, setQuantity] = useState(already_in_cart ? already_in_cart.quantity : 1);
return (
<View style={styles.container}>
<View style={styles.imageContainer}>
<Image source={{ uri: product.images[0].src.replace('https', 'http') }} style={styles.image} />
</View>
<Text style={styles.text}>
{product.name}
</Text>
<Text style={styles.text}>
${product.price}
</Text>
<HTMLView value={product.short_description} stylesheet={{
p: {
fontSize: 15,
color: '#000',
//textAlign:'center',
width: '100%',
padding: 10
}
}} />
<View style={styles.quantityContainer}>
<Text style={styles.text}>Quantity</Text>
<View style={styles.quantity}>
<TouchableOpacity onPress={() => quantity > 1 ? setQuantity(quantity - 1) : null}>
<Text style={styles.text}>-</Text>
</TouchableOpacity>
<Text style={styles.text}>{quantity}</Text>
<TouchableOpacity onPress={() => setQuantity(quantity + 1)}>
<Text style={styles.text}>+</Text>
</TouchableOpacity>
</View>
</View>
<View style={styles.buttonContainer}>
<Button onPress={() => {
already_in_cart ? setCart(cart.map(item => item.id === product.id ? { ...item, quantity: quantity } : item)) :
setCart([...cart, {
id: product.id,
name: product.name,
price: product.price,
quantity: quantity
}]);
navigation.navigate('Cart')
}} title={
already_in_cart ? "Update cart" : "Add to cart"
} />
</View>
</View>
);
}
Agregue algo de estilo para el producto:
const styles = StyleSheet.create({
container: {
flex: 1,
//alignItems:'center',
justifyContent: 'center',
},
imageContainer: {
//textAlign:'center',
width: '100%',
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
text: {
fontSize: 18,
color: '#000',
padding: 10
},
image: {
width: 200,
height: 200,
borderRadius: 10,
},
quantityContainer: {
display: 'flex',
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
padding: 10
},
quantity: {
display: 'flex',
flexDirection: 'row',
justifyContent: 'center',
alignItems: 'center',
},
buttonContainer: {
width: '100%',
padding: 10,
}
});
Y exportar la función del producto:
export default Product;
Ahora, debajo del App.js
archivo, importe el módulo que acabamos de crear:
import ProductScreen from './src/screens/Product';
Definiremos el módulo dentro del Drawer.Navigator
componente. Luego, dale estilo para que no se muestre en el cajón porque es dinámico:
<Drawer.Screen name="Product" component={ProductScreen} options={{
drawerItemStyle: {
display: "none"
}
}} />
En src/components/Products.js
, importar TouchableOpacity
desde react-native
:
import {TouchableOpacity} from 'react-native';
Al renderizar la imagen y el nombre del producto, envuelva cada uno de ellos con el TouchableOpacity
componente que pasa los datos dinámicos del producto:
<TouchableOpacity onPress={() => navigation.navigate('Product',{product})}>
<Image source={{uri:product.images[0].src.replace('https','http')}} style={styles.image}/>
</TouchableOpacity>
<TouchableOpacity onPress={() => navigation.navigate('Product',{product})}>
<Text>{product.name}</Text>
</TouchableOpacity>
En este punto, ¡todo está listo! En la página de inicio, haga clic en la imagen o el título de cualquier producto y debería ser redirigido a una nueva pantalla de un solo producto, como se muestra en la imagen a continuación.
WooCommerce es uno de los populares complementos de comercio electrónico de código abierto disponibles para WordPress. Le brinda la flexibilidad de configurar cualquier tienda que se le ocurra. La capacidad de WooCommerce para generar API para su tienda le permite seleccionar las plataformas ideales para llegar a varios usuarios.
En esta guía, aprendimos a usar WooCommerce en una aplicación móvil React Native, pero puede usar la misma API, desarrollar cualquier aplicación y ejecutarla en diferentes plataformas.
Sugeriría seguir adelante y agregar otros módulos, como una integración de pago y pago de su elección.
¡Espero que hayas encontrado esto util!
Si se atasca, consulte el código utilizado en este tutorial en GitHub .
Fuente: https://blog.logrocket.com/building-ecommerce-mobile-app-react-native-woocommerce/
1615544450
Since March 2020 reached 556 million monthly downloads have increased, It shows that React JS has been steadily growing. React.js also provides a desirable amount of pliancy and efficiency for developing innovative solutions with interactive user interfaces. It’s no surprise that an increasing number of businesses are adopting this technology. How do you select and recruit React.js developers who will propel your project forward? How much does a React developer make? We’ll bring you here all the details you need.
Facebook built and maintains React.js, an open-source JavaScript library for designing development tools. React.js is used to create single-page applications (SPAs) that can be used in conjunction with React Native to develop native cross-platform apps.
In the United States, the average React developer salary is $94,205 a year, or $30-$48 per hour, This is one of the highest among JavaScript developers. The starting salary for junior React.js developers is $60,510 per year, rising to $112,480 for senior roles.
In context of software developer wage rates, the United States continues to lead. In high-tech cities like San Francisco and New York, average React developer salaries will hit $98K and $114per year, overall.
However, the need for React.js and React Native developer is outpacing local labour markets. As a result, many businesses have difficulty locating and recruiting them locally.
It’s no surprise that for US and European companies looking for professional and budget engineers, offshore regions like India are becoming especially interesting. This area has a large number of app development companies, a good rate with quality, and a good pool of React.js front-end developers.
As per Linkedin, the country’s IT industry employs over a million React specialists. Furthermore, for the same or less money than hiring a React.js programmer locally, you may recruit someone with much expertise and a broader technical stack.
React is a very strong framework. React.js makes use of a powerful synchronization method known as Virtual DOM, which compares the current page architecture to the expected page architecture and updates the appropriate components as long as the user input.
React is scalable. it utilises a single language, For server-client side, and mobile platform.
React is steady.React.js is completely adaptable, which means it seldom, if ever, updates the user interface. This enables legacy projects to be updated to the most new edition of React.js without having to change the codebase or make a few small changes.
React is adaptable. It can be conveniently paired with various state administrators (e.g., Redux, Flux, Alt or Reflux) and can be used to implement a number of architectural patterns.
Is there a market for React.js programmers?
The need for React.js developers is rising at an unparalleled rate. React.js is currently used by over one million websites around the world. React is used by Fortune 400+ businesses and popular companies such as Facebook, Twitter, Glassdoor and Cloudflare.
As you’ve seen, locating and Hire React js Developer and Hire React Native developer is a difficult challenge. You will have less challenges selecting the correct fit for your projects if you identify growing offshore locations (e.g. India) and take into consideration the details above.
If you want to make this process easier, You can visit our website for more, or else to write a email, we’ll help you to finding top rated React.js and React Native developers easier and with strives to create this operation
#hire-react-js-developer #hire-react-native-developer #react #react-native #react-js #hire-react-js-programmer
1651604400
React Starter Kit is an opinionated boilerplate for web development built on top of Node.js, Express, GraphQL and React, containing modern web development tools such as Webpack, Babel and Browsersync. Helping you to stay productive following the best practices. A solid starting point for both professionals and newcomers to the industry.
See getting started guide, demo, docs, roadmap | Join #react-starter-kit chat room on Gitter | Visit our sponsors:
The master
branch of React Starter Kit doesn't include a Flux implementation or any other advanced integrations. Nevertheless, we have some integrations available to you in feature branches that you can use either as a reference or merge into your project:
master
)feature/redux
)feature/apollo
)master
)You can see status of most reasonable merge combination as PRs labeled as TRACKING
If you think that any of these features should be on master
, or vice versa, some features should removed from the master
branch, please let us know. We love your feedback!
React Starter Kit
| React Static Boilerplate
| ASP.NET Core Starter Kit
| |
---|---|---|---|
App type | Isomorphic (universal) | Single-page application | Single-page application |
Frontend | |||
Language | JavaScript (ES2015+, JSX) | JavaScript (ES2015+, JSX) | JavaScript (ES2015+, JSX) |
Libraries | React, History, Universal Router | React, History, Redux | React, History, Redux |
Routes | Imperative (functional) | Declarative | Declarative, cross-stack |
Backend | |||
Language | JavaScript (ES2015+, JSX) | n/a | C#, F# |
Libraries | Node.js, Express, Sequelize, GraphQL | n/a | ASP.NET Core, EF Core, ASP.NET Identity |
SSR | Yes | n/a | n/a |
Data API | GraphQL | n/a | Web API |
♥ React Starter Kit? Help us keep it alive by donating funds to cover project expenses via OpenCollective or Bountysource!
Anyone and everyone is welcome to contribute to this project. The best way to start is by checking our open issues, submit a new issue or feature request, participate in discussions, upvote or downvote the issues you like or dislike, send pull requests.
Copyright © 2014-present Kriasoft, LLC. This source code is licensed under the MIT license found in the LICENSE.txt file. The documentation to the project is licensed under the CC BY-SA 4.0 license.
Author: kriasoft
Source Code: https://github.com/kriasoft/react-starter-kit
License: MIT License
1621573085
Expand your user base by using react-native apps developed by our expert team for various platforms like Android, Android TV, iOS, macOS, tvOS, the Web, Windows, and UWP.
We help businesses to scale up the process and achieve greater performance by providing the best react native app development services. Our skilled and experienced team’s apps have delivered all the expected results for our clients across the world.
To achieve growth for your business, hire react native app developers in India. You can count on us for all the technical services and support.
#react native app development company india #react native app developers india #hire react native developers india #react native app development company #react native app developers #hire react native developers