Utilisation du modèle Redux dans React Native

Redux est un conteneur d'état prévisible pour les applications JavaScript.

Il vous aide à écrire des applications qui se comportent de manière cohérente, s'exécutent dans différents environnements (client, serveur et natif) et sont faciles à tester. En plus de cela, il offre une excellente expérience de développement.

Photo de Safar Safarov sur Unsplash

Installation

Afin d'installer le redux dans react native. Nous installerons les packages suivants.

yarn add react-redux redux redux-persist redux-thunk @react-native-community/async-storage
  1. Actions
  2. Réducteurs
  3. index.js

Ajoutez le code suivant dans types.js

export const SAVE_TOKEN = 'SAVE_TOKEN';

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

Ajoutez le code suivant dans le fichier 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);

Ajoutez le code suivant dans le fichier 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

Le rôle crucial de la "clé" dans le mappage de tableaux

Le rôle crucial de la "clé" dans le mappage de tableaux

Si vous êtes quelqu'un qui a tendance à ignorer le message d'avertissement "chaque élément doit avoir une clé unique" lors du mappage d'un tableau dans React, il est important de prendre un moment pour comprendre pourquoi cet avertissement est déclenché en premier lieu. Dans React, lors du rendu d'une liste d'éléments à l'aide de "Array.

React Native vs Android : une comparaison complète

Mon parcours d'Android à React Native

React Native vs Android&nbsp;: une comparaison complète

En tant que développeur Android avec plus de 7 ans d'expérience, j'ai toujours été attiré par le monde de Java et Kotlin. Mais il y a environ un an, je me suis retrouvé à vouloir explorer quelque chose de nouveau - et c'est à ce moment-là que j'ai commencé à plonger dans React Native.

Related posts

L'érosion lente : dévoiler les façons dont les gens perdent leur carrière

L'érosion lente&nbsp;: dévoiler les façons dont les gens perdent leur carrière

Dans le monde rapide et compétitif d'aujourd'hui, la carrière d'une personne joue un rôle important dans la croissance personnelle, la stabilité financière et la satisfaction globale de la vie. Cependant, de nombreuses personnes se retrouvent prises dans un cycle incessant de stagnation et d'insatisfaction, dépérissant progressivement dans leur vie professionnelle.

L'art est-il toujours apolitique ?

L'art est-il toujours apolitique ?

Hier, nous avons fermé la porte du concours Eurovision de la chanson de cette année avec une grande finale scintillante et chaotique où la chanteuse suédoise Loreen a remporté le trophée, devenant la première femme à gagner deux fois et ramenant la couronne à la Suède 50 ans après qu'ABBA a remporté le concours. avec "Waterloo". Ils sont devenus l'un des plus grands groupes du canon de la musique pop.

Le défi de lecture Goodreads est toxique

Le défi de lecture Goodreads est toxique

La démangeaison dans ma main s'est propagée alors que je négociais avec le libraire local pour un autre livre. Ce livre, comme les autres que j'ai achetés récemment, trouverait son trône sur ma pile «À lire» (TBR); et pourtant, je l'ai acheté.

La performance solo de la fille aux cheveux roux

En mission de Hayden, Katie se filme en train de se masturber.

La performance solo de la fille aux cheveux roux

Il était minuit passé lorsque Hayden a ramené Katie à son dortoir universitaire après leur soirée ensemble. Elle avait un cours tôt le matin et n'avait plus de vêtements de rechange après être restée avec lui la nuit précédente.