Skip to content

ko-devHong/device-data-module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Device Data Module

npm version License: MIT

μ„€λͺ…

DeviceDataModule은 React Native μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ„€μ΄ν‹°λΈŒ 데이터 μ €μž₯μ†Œμ— μ ‘κ·Όν•  수 μžˆλ„λ‘ μ„€κ³„λœ λͺ¨λ“ˆμž…λ‹ˆλ‹€. Androidμ—μ„œλŠ” SharedPreferencesλ₯Ό, iOSμ—μ„œλŠ” UserDefaultsλ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€. κΈ°μ‘΄ λ„€μ΄ν‹°λΈŒ μ•±μ—μ„œ μ‚¬μš©ν•˜λ˜ 데이터λ₯Ό Expo λͺ¨λ“ˆμ—μ„œ μ½κ±°λ‚˜ 써야 ν•  λ•Œ μœ μš©ν•˜λ©°, 점진적인 μ•± λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹œ 데이터 곡유λ₯Ό μ›ν™œν•˜κ²Œ ν•΄μ€λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯은 각 ν”Œλž«νΌμ˜ λ„€μ΄ν‹°λΈŒ μ €μž₯μ†Œμ— 직접 μ ‘κ·Όν•˜μ—¬ ν‚€-κ°’ 데이터λ₯Ό μ €μž₯, 쑰회, μ‚­μ œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.


μ„€μΉ˜

pnpm install device-data-module

λ˜λŠ”

yarn add device-data-module

λ˜λŠ”

npx expo install device-data-module

μ‚¬μš©λ²•

μ•„λž˜ μ˜ˆμ œλŠ” DeviceDataModule을 μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ €μž₯, 쑰회, μ‚­μ œν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.

import { useState } from 'react';
import DeviceDataModule from "device-data-module";
import { Button, SafeAreaView, ScrollView, Text, TextInput, View, StyleSheet } from "react-native";

export default function App() {
  const [key, setKey] = useState('');
  const [value, setValue] = useState('');
  const [storedValue, setStoredValue] = useState<string | null>(null);

  // μ£Όμ–΄μ§„ ν‚€λ‘œ 값을 μ €μž₯ν•©λ‹ˆλ‹€. (Android: SharedPreferences, iOS: UserDefaults)
  const handleSetItem = async () => {
    if (key && value) {
      await DeviceDataModule.setItem(key, value);
      alert(`${key} μ €μž₯ μ™„λ£Œ!`);
    }
  };

  // μ£Όμ–΄μ§„ ν‚€μ˜ 값을 κ°€μ Έμ˜΅λ‹ˆλ‹€. (Android: SharedPreferences, iOS: UserDefaults)
  const handleGetItem = async () => {
    if (!key) return;
    const result = await DeviceDataModule.getItem(key);
    setStoredValue(result || '값이 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€');
  };

  // μ£Όμ–΄μ§„ ν‚€μ˜ ν•­λͺ©μ„ μ‚­μ œν•©λ‹ˆλ‹€. (Android: SharedPreferences, iOS: UserDefaults)
  const handleRemoveItem = async () => {
    if (!key) return;
    await DeviceDataModule.removeItem(key);
    setStoredValue(null);
    alert(`${key} μ‚­μ œ μ™„λ£Œ!`);
  };

  return (
    <SafeAreaView style={styles.container}>
      <ScrollView>
        <Text style={styles.header}>Device Data Storage 예제</Text>
        
        <View style={styles.inputGroup}>
          <TextInput
            style={styles.input}
            placeholder="ν‚€ (Key)"
            value={key}
            onChangeText={setKey}
          />
          <TextInput
            style={styles.input}
            placeholder="κ°’ (Value)"
            value={value}
            onChangeText={setValue}
          />
        </View>

        <View style={styles.buttonGroup}>
          <Button title="κ°’ μ €μž₯ (Set Item)" onPress={handleSetItem} />
          <Button title="κ°’ 쑰회 (Get Item)" onPress={handleGetItem} />
          <Button title="κ°’ μ‚­μ œ (Remove Item)" onPress={handleRemoveItem} />
        </View>

        {storedValue && (
          <View style={styles.resultContainer}>
            <Text>μ €μž₯된 κ°’:</Text>
            <Text>{storedValue}</Text>
          </View>
        )}
      </ScrollView>
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: { flex: 1, padding: 20 },
  header: { fontSize: 24, fontWeight: 'bold', marginBottom: 20 },
  inputGroup: { marginBottom: 20 },
  input: { borderWidth: 1, borderColor: '#ccc', padding: 10, marginBottom: 10 },
  buttonGroup: { gap: 10, marginBottom: 20 },
  resultContainer: { padding: 10, backgroundColor: '#eee' },
});

API

setItem(key: string, value: string): Promise<void>

μ§€μ •λœ ν‚€(key)에 λ¬Έμžμ—΄ κ°’(value)을 μ €μž₯ν•©λ‹ˆλ‹€.

  • key: μ €μž₯ν•  λ°μ΄ν„°μ˜ ν‚€μž…λ‹ˆλ‹€.
  • value: μ €μž₯ν•  λ°μ΄ν„°μ˜ κ°’μž…λ‹ˆλ‹€.
  • Android: SharedPreferences에 μ €μž₯λ©λ‹ˆλ‹€.
  • iOS: UserDefaults에 μ €μž₯λ©λ‹ˆλ‹€.

getItem(key: string): Promise<string | null>

μ§€μ •λœ ν‚€(key)에 ν•΄λ‹Ήν•˜λŠ” 값을 κ°€μ Έμ˜΅λ‹ˆλ‹€. 값이 μ—†μœΌλ©΄ null을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

  • key: κ°€μ Έμ˜¬ λ°μ΄ν„°μ˜ ν‚€μž…λ‹ˆλ‹€.
  • Android: SharedPreferencesμ—μ„œ μ‘°νšŒν•©λ‹ˆλ‹€.
  • iOS: UserDefaultsμ—μ„œ μ‘°νšŒν•©λ‹ˆλ‹€.

removeItem(key: string): Promise<void>

μ§€μ •λœ ν‚€(key)에 ν•΄λ‹Ήν•˜λŠ” 값을 μ‚­μ œν•©λ‹ˆλ‹€.

  • key: μ‚­μ œν•  λ°μ΄ν„°μ˜ ν‚€μž…λ‹ˆλ‹€.
  • Android: SharedPreferencesμ—μ„œ μ‚­μ œν•©λ‹ˆλ‹€.
  • iOS: UserDefaultsμ—μ„œ μ‚­μ œν•©λ‹ˆλ‹€.

λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ LICENSE νŒŒμΌμ„ μ°Έκ³ ν•˜μ„Έμš”.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors