Usando la plantilla Redux en React Native

Redux es un contenedor de estado predecible para aplicaciones JavaScript.

Le ayuda a escribir aplicaciones que se comporten de manera coherente, se ejecuten en diferentes entornos (cliente, servidor y nativo) y sean fáciles de probar. Además de eso, proporciona una gran experiencia de desarrollador.

Foto de Safar Safarov en Unsplash

Instalación

Para instalar el redux en react native. Instalaremos los siguientes paquetes.

yarn add react-redux redux redux-persist redux-thunk @react-native-community/async-storage
  1. Comportamiento
  2. Reductores
  3. index.js

Agregue el siguiente código en types.js

export const SAVE_TOKEN = 'SAVE_TOKEN';

import { SAVE_TOKEN } from './types';
export const saveToken = (key) => ({
  type: SAVE_TOKEN,
  payload: key
});

Agregue el siguiente código en index.js

import { SAVE_TOKEN } from '../actions/types';
const initialState = {
 token: ''
};
const Reducer = (state = initialState, action) => {
switch (action.type) {
case SAVE_TOKEN:
 return {
   ...state,
   token: action.payload,
};
default: 
 return state;
}
};
export default Reducer;

import {applyMiddleware, combineReducers, createStore, compose} from 'redux';
import thunk from 'redux-thunk';
import {persistStore, persistReducer} from 'redux-persist';
import AsyncStorage from '@react-native-community/async-storage';
import Reducer from './reducers';
// Redux Debugger
let composeEnhancer = compose;
if (__DEV__) {
composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
}
const Reducers = {
 appData: Reducer
};
const persistConfig = {
 key: 'root',
 storage: AsyncStorage,
 blacklist: ['navigation'], // navigation will not be persisted
 // stateReconciler: autoMergeLevel2,
 // timeout: 100000,
};
const persistedReducer = persistReducer(
 persistConfig,
 combineReducers(Reducers),
);
export const Store = createStore( 
 persistedReducer,composeEnhancer(applyMiddleware(thunk))
);
export const persistor = persistStore(Store);

Agregue el siguiente código en el archivo App.js

import React from 'react';
import {Route} from './src/navigation/routes';
import {Provider} from 'react-redux';
import {PersistGate} from 'redux-persist/integration/react';
import {Store, persistor} from './src/store';
import {StatusBar} from 'react-native';
import RNBootSplash from 'react-native-bootsplash';
const App = () => {
 RNBootSplash.hide();
 return (
  <Provider store={Store}>
   <PersistGate loading={null} persistor={persistor}>
   <StatusBar backgroundColor="#000" barStyle="light-content" /
    <Route />
   </PersistGate>
  </Provider>
);
};
export default App;

import React, {useState, useEffect} from 'react';
import {persistor} from '../store';
import * as wpActions from '../../store/actions';
import {useSelector, useDispatch} from 'react-redux';
const Login = ({navigation}) => {
 const dispatch = useDispatch();
 const [code, setCode] = useState('');
 const details = useSelector((state) => state.appData.details);
 console.log(details);
// Comment this code if not clearing database.
 useEffect(() => {
  persistor.purge;
  console.log('purging database');
 }, []);
 
 const sendToken=()=>{ 
   dispatch(wpActions.saveToken(code))
 }

yarn add @react-native-community/async-storage @react-native-community/masked-view  @react-navigation/drawer @react-navigation/native @react-navigation/stack react-native-gesture-handler react-native-reanimated react-native-responsive-screen react-native-safe-area-context react-native-screens react-native-vector-icons react-redux redux redux-persist redux-thunk

Suggested posts

El papel crucial de la "clave" en el mapeo de matrices

El papel crucial de la "clave" en el mapeo de matrices

Si eres alguien que tiende a ignorar el mensaje de advertencia "cada elemento debe tener una clave única" al mapear una matriz en React, es importante tomarse un momento para comprender por qué se genera esta advertencia en primer lugar. En React, al renderizar una lista de elementos usando el método “Array.

React Native vs. Android: una comparación exhaustiva

Mi viaje de Android a React Native

React Native vs. Android: una comparación exhaustiva

Como desarrollador de Android con más de 7 años de experiencia, siempre me ha atraído el mundo de Java y Kotlin. Pero hace aproximadamente un año, me encontré con ganas de explorar algo nuevo, y fue entonces cuando comencé a sumergirme en React Native.

Related posts

¿Qué hace que un podcast sea influyente?

¿Qué hace que un podcast sea influyente?

La semana pasada noté un comunicado de prensa, enviado a través de PressGazette (un sitio web de noticias de los medios británicos). El artículo anunciaba que Acast, la empresa de publicidad y alojamiento de podcasts de Scandi, lideraría un consorcio de editores "probablemente los más influyentes" en podcasting.

"La fosa de las Marianas revelada: revelando las aterradoras verdades ocultas del abismo"

"La fosa de las Marianas revelada: revelando las aterradoras verdades ocultas del abismo"

Introducción: Bienvenidos, valientes lectores, a un viaje que nos llevará a las profundidades más oscuras de nuestro planeta. En este blog, profundizamos en el enigmático mundo de la Fosa de las Marianas, descubriendo sus secretos ocultos y descubriendo las verdades escalofriantes que se encuentran debajo de su superficie.

Rastree a cualquiera con solo un número de teléfono | Investigación OSINT

Rastree a cualquiera con solo un número de teléfono | Investigación OSINT

Puede ser un investigador de OSINT, un jugador de CTF o simplemente alguien que recibe llamadas no deseadas. Alguien que está tratando de verificar el número que viste en un anuncio.

Twitter de televisión en red

Twitter de televisión en red

Lo que es viejo ahora es nuevo otra vez y lo que solía ser algo reluciente ahora se siente aburrido. No me refiero a que los jeans JNCO regresen entre los chicos geniales del centro de la ciudad junto con otras modas de fines de la década de 1990.