Sử dụng mẫu Redux trong React Native

Redux là một vùng chứa trạng thái có thể dự đoán được cho các ứng dụng JavaScript.

Nó giúp bạn viết các ứng dụng hoạt động nhất quán, chạy trong các môi trường khác nhau (máy khách, máy chủ và bản địa) và dễ kiểm tra. Trên hết, nó cung cấp trải nghiệm tuyệt vời cho nhà phát triển.

Ảnh của Safar Safarov trên Unsplash

Cài đặt

Để cài đặt redux trong react native. Chúng tôi sẽ cài đặt các gói sau.

yarn add react-redux redux redux-persist redux-thunk @react-native-community/async-storage
  1. Hành động
  2. Bộ giảm tốc
  3. index.js

Thêm mã sau đây trong styles.js

export const SAVE_TOKEN = 'SAVE_TOKEN';

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

Thêm mã sau vào 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);

Thêm mã sau vào tệp 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

Vai trò quan trọng của "Chìa khóa" trong Ánh xạ mảng

Vai trò quan trọng của "Chìa khóa" trong Ánh xạ mảng

Nếu bạn là người có xu hướng bỏ qua thông báo cảnh báo “mỗi phần tử phải có một khóa duy nhất” trong khi ánh xạ một mảng trong React, điều quan trọng là bạn phải dành một chút thời gian để hiểu tại sao cảnh báo này lại được đưa ra ngay từ đầu. Trong React, khi hiển thị danh sách các mục bằng cách sử dụng “Array.

React Native so với Android: So sánh toàn diện

Hành trình của tôi từ Android đến React Native

React Native so với Android: So sánh toàn diện

Là một nhà phát triển Android với hơn 7 năm kinh nghiệm, tôi luôn bị cuốn hút vào thế giới của Java và Kotlin. Nhưng khoảng một năm trước, tôi thấy mình muốn khám phá một điều gì đó mới mẻ — và đó là lúc tôi bắt đầu tìm hiểu về React Native.

Related posts

Mối đe dọa đó Lưu trữ: Tập 7 Black Basta

Mối đe dọa đó Lưu trữ: Tập 7 Black Basta

Trong thế giới kết nối ngày nay, mối đe dọa tấn công mạng phổ biến hơn bao giờ hết. Tội phạm mạng và các tác nhân quốc gia liên tục tìm cách khai thác các lỗ hổng và đánh cắp dữ liệu có giá trị, gây rủi ro đáng kể cho các tổ chức thuộc mọi quy mô.

Thu thập OSINT để săn lùng mối đe dọa

Thu thập OSINT để săn lùng mối đe dọa

Xin chào, những người đam mê mạng! Chào mừng bạn quay trở lại OSINT cho loạt bài săn tìm mối đe dọa. Trong bài viết đầu tiên, tôi đã cung cấp cho bạn cái nhìn tổng quan về OSINT và tầm quan trọng của nó trong việc tìm kiếm mối đe dọa.

Tài trợ cho việc loại bỏ carbon trong năm tài chính 24

Phân tích các yêu cầu phân bổ của Carbon180 trên các lộ trình

Tài trợ cho việc loại bỏ carbon trong năm tài chính 24

Bởi Alyson Lee, cố vấn quản lý các vấn đề của chính phủ Quy trình phân bổ ngân sách hàng năm của chính phủ liên bang là trọng tâm trong những nỗ lực của chúng tôi nhằm tài trợ cho việc loại bỏ carbon dioxide (CDR). Mỗi năm, Carbon180 gửi yêu cầu tới các văn phòng quốc hội khác nhau để giúp hướng dẫn nơi đô la của năm tới sẽ chảy.

Vụ sát hại Jordan Neely và vấn đề phân biệt chủng tộc “yêu nước”

Hoa Kỳ có thể thực hiện một bước thiết yếu là không đánh đồng hành vi phân biệt chủng tộc với việc trở thành một người Mỹ tốt không?

Vụ sát hại Jordan Neely và vấn đề phân biệt chủng tộc “yêu nước”

[Cảnh báo kích hoạt: Bài tiểu luận này bao gồm các bức ảnh chụp màn hình những người ca ngợi kẻ giết Jordan Neely.] Các quan chức thực thi pháp luật cuối cùng - và có lẽ miễn cưỡng - đã buộc tội Daniel Penny, kẻ đã bóp cổ Jordan Neely cho đến chết, vì tội giết người đó.