Redux è un contenitore di stati prevedibile per le app JavaScript.
Ti aiuta a scrivere applicazioni che si comportano in modo coerente, vengono eseguite in ambienti diversi (client, server e nativi) e sono facili da testare. Inoltre, offre un'ottima esperienza per gli sviluppatori.
Per installare il redux in React Native. Installeremo i seguenti pacchetti.
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
Se sei qualcuno che tende a ignorare il messaggio di avviso "ogni elemento dovrebbe avere una chiave univoca" durante la mappatura di un array in React, è importante prendersi un momento per capire perché questo avviso viene generato in primo luogo. In React, quando si esegue il rendering di un elenco di elementi utilizzando il metodo "Array.
Come sviluppatore Android con oltre 7 anni di esperienza, sono sempre stato attratto dal mondo di Java e Kotlin. Ma circa un anno fa, mi sono ritrovato a voler esplorare qualcosa di nuovo, ed è allora che ho iniziato a immergermi in React Native.
Quando cresci tendi a sentirti dire che il mondo è così com'è e che la tua vita è vivere la tua vita dentro il mondo, senza mai rischiare la vita, basta seguire un percorso prestabilito e morire alla fine, e cercare di non farlo sfondare troppo i muri. Ma questa è una vita molto limitata.
Quando fai una richiesta a facebook.com, il tuo computer cerca il nome di dominio per tradurre quel nome di dominio in un indirizzo IP in modo che il tuo computer possa effettuare quella connessione.
La scorsa settimana ho notato un comunicato stampa, inviato tramite PressGazette (un sito Web di notizie sui media britannici). L'articolo annunciava che Acast, la società di hosting e pubblicità di podcast di Scandi, avrebbe guidato un consorzio di editori "probabilmente i più influenti" nel podcasting.
Nel mondo frenetico e competitivo di oggi, la propria carriera gioca un ruolo significativo nella crescita personale, nella stabilità finanziaria e nella soddisfazione generale della vita. Tuttavia, molte persone si trovano intrappolate in un ciclo inesorabile di stagnazione e insoddisfazione, che si esauriscono gradualmente nella loro vita professionale.