Skip to content

Commit 28cea4b

Browse files
authored
Merge pull request #36 from dailymp/master
Readme es created
2 parents 7966194 + 3598173 commit 28cea4b

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

readme_es.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# react-promise-tracker
2+
3+
Componente React Hoc, rastreador de promesas.
4+
Puedes verlo en acción: [Demo](https://stackblitz.com/edit/react-promise-tracker-default-area-sample)
5+
6+
# ¿Por qué necesito esto?
7+
8+
Algunas veces necesitas rastrear promesas bloqueantes (ejemplo: fetch http calls),
9+
para escoger entre mostrar un spinner de cargando... o no.
10+
11+
Esta librería implementa:
12+
- Una función simple que te permitirá rastrear una promesa.
13+
- Un componente HOC, que nos permitirá usar un wrapper como spinner de cargando... (se mostrará cuando el número de peticiones rastreadas sea mayor que cero, y estará oculto cuando no).
14+
15+
# Instalación.
16+
17+
```cmd
18+
npm install react-promise-tracker --save
19+
```
20+
21+
# Uso
22+
23+
Siempre que quieras rastrear una promesa, simplemente usa el componente como wrapper tal como se muestra en el siguiente código:
24+
25+
```diff
26+
+ import { trackPromise} from 'react-promise-tracker';
27+
//...
28+
29+
+ trackPromise(
30+
fetchUsers(); // You function that returns a promise
31+
+ );
32+
```
33+
34+
Entonces solo necesitas crear el componente que define una propiedad llamada _trackedPromiseInProgress_
35+
36+
Y envolverlo con el _promiseTrackerHoc_
37+
38+
## Ejemplo báscio:
39+
40+
```diff
41+
import React, { Component } from 'react';
42+
import PropTypes from 'prop-types';
43+
+ import { promiseTrackerHoc} from 'react-promise-tracker';
44+
45+
const InnerLoadingSpinerComponent = (props) => {
46+
return (
47+
<div>
48+
{
49+
(props.trackedPromiseInProgress === true) ?
50+
<h3>Hey I'm a spinner loader wannabe !!!</h3>
51+
:
52+
null
53+
}
54+
</div>
55+
)
56+
};
57+
58+
InnerLoadingSpinerComponent.propTypes = {
59+
trackedPromiseInProgress : PropTypes.bool.isRequired,
60+
};
61+
62+
+ export const LoadingSpinnerComponent = promiseTrackerHoc(InnerLoadingSpinerComponent);
63+
```
64+
65+
- Para añadir un component spinner atractivo, puedes hacer uso de _react-spinners_:
66+
67+
- [Demo page](http://www.davidhu.io/react-spinners/)
68+
- [Github page](https://github.com/davidhu2000/react-spinners)
69+
70+
71+
- Luego en el punto de entrada de tu apliación (main / app / ...) solo añade este componente loading spinner, para que sea renderizado:
72+
73+
```diff
74+
import React from 'react';
75+
+ import { LoadingSpinnerComponent} from './loadingSpinner';
76+
77+
export const AppComponent = (props) => (
78+
<div>
79+
<h1>Hello App!</h1>
80+
+ <LoadingSpinnerComponent />
81+
</div>
82+
);
83+
```
84+
85+
## Ejemplo con áreas:
86+
87+
Es posible usar react-promise-tracker como si se mostrara un solo spinner en la página. Hay casos en los que desea mostrar un spinner solo bloqueando cierta área de la pantalla (por ejemplo, una aplicación de lista de productos con una sección de carrito de la compra).
88+
Nos gustaría bloquear esa área de la UI (mostrar sólo el spinner) mientras carga el producto, pero no el resto de la interfaz de usuario, y lo mismo con la sección pop-up del carro de compras.
89+
90+
![Shopping cart sample](./readme_resources/00-shopping-cart-sample.png)
91+
92+
Podemos añadir el área `default-area` para mostrar el spinner de la lista de productos:
93+
94+
```diff
95+
import React from 'react';
96+
+ import { LoadingSpinnerComponent} from './loadingSpinner';
97+
98+
export const ProductListComponent = (props) => (
99+
<div>
100+
...
101+
+ <LoadingSpinnerComponent /> // default-area
102+
</div>
103+
);
104+
```
105+
106+
Si añadimos el área, `shopping-cart-area` mostraremos el spinner del carro de compra:
107+
108+
```diff
109+
import React from 'react';
110+
+ import { LoadingSpinnerComponent} from './loadingSpinner';
111+
112+
export const ShoppingCartModal = (props) => (
113+
<div>
114+
+ <LoadingSpinnerComponent area="shopping-cart-area" />
115+
</div>
116+
);
117+
```
118+
119+
Con este enfoque, no necesitamos definir diferentes componentes spinners, con uno solo podemos renderizarlo cuando queramos rastrear promises en una determinada área:
120+
121+
```diff
122+
+ import { trackPromise} from 'react-promise-tracker';
123+
...
124+
+ trackPromise(
125+
fetchSelectedProducts();
126+
+ ,'shopping-cart-area');
127+
```
128+
129+
# Demos
130+
131+
Si quieres verlo en acción puedes visitar:
132+
133+
- [Ejemplo del área por defecto](https://stackblitz.com/edit/react-promise-tracker-default-area-sample)
134+
135+
- [Ejemplo de dos áreas](https://stackblitz.com/edit/react-promise-tracker-two-areas-sample)
136+
137+
138+
# Sobre Lemoncode
139+
140+
Somos un equipo de una larga experiencia como desarrolladores freelance, establecidos como grupo en 2010.
141+
Estamos especializados en tecnologías Front End y .NET. [Click aquí](http://lemoncode.net/services/en/#en-home) para más info sobre nosotros.
142+
143+
Para la audiencia LATAM/Español estamos desarrollando un máster Front End Online, más info: http://lemoncode.net/master-frontend

0 commit comments

Comments
 (0)