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.
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
export const SAVE_TOKEN = 'SAVE_TOKEN';
import { SAVE_TOKEN } from './types';
export const saveToken = (key) => ({
type: SAVE_TOKEN,
payload: key
});
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);
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
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.
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.
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.
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.
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.
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.