레이블이 react인 게시물을 표시합니다. 모든 게시물 표시
레이블이 react인 게시물을 표시합니다. 모든 게시물 표시

20230815

React Native 개발의 기본 개념

React Native는 Facebook에서 제공하는 오픈 소스 모바일 애플리케이션 개발 프레임워크입니다. React Native는 React와 JavaScript를 사용하여 iOS와 Android 모바일 애플리케이션을 개발할 수 있게 해줍니다.

React Native는 React의 컴포넌트 기반 아키텍처를 기반으로 하고 있으며, JSX 문법을 사용하여 UI를 빌드합니다. 이를 통해 웹 개발에서와 같은 방식으로 UI를 구성할 수 있으며, 비교적 쉽게 UI를 렌더링할 수 있습니다.

React Native를 사용하면 개발자는 iOS 및 Android 애플리케이션을 모두 작성할 필요 없이 동일한 코드를 재사용할 수 있습니다. React Native를 사용하여 개발 시에는 네이티브 iOS 및 Android 구성 요소와 웹을위한 React 컴포넌트 모두를 사용할 수 있으며 이를 통해 안정적이고 빠르면서도 일관된 사용자 경험을 제공할 수 있습니다. React Native를 사용할 때 코드는 전적으로 JavaScript로 작성됩니다.

이러한 JavaScript 코드는 네이티브 iOS와 Android 라이브러리와 상호작용하여 실행됩니다.

React Native는 네이티브 뷰 구성 요소를 사용하여 iOS 및 Android의 레이아웃을 구성합니다.

또한, 컴파일러가 최적화하여 실행 가능한 네이티브 코드로 컴파일 됩니다. React Native는 완전히 오픈 소스로 제공되며, 다양한 커뮤니티 및 개발자들이 지속적으로 기능을 개선하고 새로운 컴포넌트를 추가하고 있습니다. 이러한 개발자들의 지속적인 노력은 React Native를 더욱 보다 안정적이고 강력한 프레임워크로 발전시키고 있습니다.


React Native에서는 다양한 컴포넌트를 제공합니다. 이들 컴포넌트는 iOS 및 Android의 네이티브 구성 요소로 컴파일되어 일관된 사용자 인터페이스(UI)를 제공합니다. 다음은 React Native에서 사용되는 일부 주요 컴포넌트입니다.


1. View: UI의 기본 요소이며, 다른 모든 구성 요소를 포함할 수 있습니다.

2. Text: 텍스트를 표시하는 데 사용되며, 글꼴 크기, 스타일, 레이아웃 등을 지정할 수 있습니다.

3. Image: 이미지를 표시하거나 로드하는 데 사용됩니다. 로컬 또는 원격 URL에서 이미지를 가져올 수 있습니다.

4. TextInput: 사용자 입력을 받기 위해 사용되는 텍스트 입력 필드입니다.

5. ScrollView: 스크롤 가능한 영역을 만드는 데 사용되며, 스크롤 이벤트를 처리할 수 있습니다.

6. Button: 사용자가 클릭하여 이벤트를 발생시키는 버튼을 생성합니다.

7. Picker: 드롭다운 목록을 생성하며, iOS와 Android에서 각각 다른 디자인을 가집니다.

8. FlatList: 대량의 데이터를 렌더링하는 데 사용되며, 화면에 표시되는 항목이 사용자가 스크롤 할 때마다 자동으로 생성됩니다.

9. TouchableOpacity: 사용자 인터랙션을 처리하기 위해 사용되며, 클릭이나 탭을 감지합니다.

10. WebView: 웹 페이지를 렌더링하기 위해 사용됩니다. 


React Native에서 제공되는 컴포넌트 외에도 커스텀 컴포넌트를 만들어 사용할 수 있으며, 속성(prop)을 통해 다른 컴포넌트에 전달하고 상태(state)를 유지할 수 있습니다.


일부 인기 있는 외부 라이브러리들입니다:

react-navigation: React Native 앱 내에서 화면 전환을 지원하는 강력한 네비게이션 라이브러리입니다.

react-native-vector-icons: 벡터 아이콘을 쉽게 사용할 수 있는 컴포넌트를 제공합니다.

react-native-swiper: 이미지 슬라이드 쇼와 같은 좋은 스크롤 효과를 만들 수 있는 Swiper 컴포넌트를 제공합니다.

react-native-paper: Material Design 가이드라인에 따른 UI 구성 요소 및 테마 지원을 포함하고 있는 모듈입니다.

native-base: 크로스 플랫폼 모바일 애플리케이션 개발을 위한 고품질의 사용자 인터페이스(UI) 요소 세트가 포함된 프레임웍입니다.

더 많은 외부 리액트 네이티브 컴포넛나 패턴, 그외 도구 등에 대해서는 'awesome-react-native' 저장소(https://github.com/jondot/awesome-react-native) 에서 확인해보시길 추천 드립니다. 또한, 필요에 따라 직접 커스터마 이징 할수있습니다! 원하는 기능과 디자인에 맞춰 자신만의 React Native 앱용으로 개발 가능합니다 .



20210427

react native asyncstorage



어싱크스토리지는 개발을 할 때 변수값을 저장해두는 공간이라고 생각하면 편할 것 같습니다!

근데 어싱크스토리지 말고도 변수값은 저장은 해둘 수 있는 곳이 많죠 ex) 컴포넌트의 state나 redux등으로 저장이

가능합니다.

그러면 어싱크스토리지는 왜 쓰는가?

어싱크스토리지는 로컬 데이터베이스 저장소라고 생각하시면 다가가기 쉬울 것 같습니다. 앱이 꺼져도 데이터베이스는 남아있듯이 똑같이 어싱크스토리지에 값을 저장하고 앱을 꺼도 데이터가 저장되어있는 개념입니다.


reactnative.dev/docs/asyncstorage
 

🚧 AsyncStorage · React Native

Deprecated. Use one of the community packages instead.

reactnative.dev

www.npmjs.com/package/@react-native-community/async-storage
 

@react-native-community/async-storage

Asynchronous, persistent, key-value storage system for React Native.

www.npmjs.com

https://github.com/andpor/react-native-sqlite-storage
 

andpor/react-native-sqlite-storage

Full featured SQLite3 Native Plugin for React Native (Android and iOS) - andpor/react-native-sqlite-storage

github.com


일단 사용법은 npm을 설치 해줍니다. npm 고르는 것은 개발자 선택이니 일단 예시 3개를 올려놨습니다.

AsyncStorage.setItem('id','userId0', () => {
  console.log("저장되었습니다!");
});   // 저장하는 법

// 유저 닉네임 불러오기
AsyncStorage.getItem('id', getId => {
  console.log(getId); 
}); // 이렇게 불러오면 userId0을 불러와서 사용할 수 있습니다.


대표적으로 setItem, getItem 만 알고 있어도 유용하게 사용할 수 있습니다 :)

JSON.stringify 를 통해서 저장 데이터가 Json형태일경우 문자열로 바꾸어 주어야합니다.


데이터 바꾸기
AsyncStorage.mergeItem(key값, 바꿀데이터)



키값을 통해서 저장되는 데이터를 바꿀 수 있습니다.


데이터 전체 지우기
AsyncStorage.clear() // 복구 불가

react native 생체인식

http://www.npmjs.com/package/react-native-touch-id


Install

npm i --save react-native-touch-id
npm i --save react-native-touch-id

or
yarn add react-native-touch-idyarn add react-native-touch-id

Android

react-native version < 0.60 이면
react-native link react-native-touch-id
react-native link react-native-touch-id

으로 link 해준다.

AndroidManifest.xml


AndroidManifest.xml에
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
추가 -> 핸드폰 지문인식 권한 추가
<uses-permission android:name="android.permission.USE_FINGERPRINT" />

코드

import TouchID from 'react-native-touch-id'; 


const optionalConfigObject = 
{   title'Authentication Required'// 타이틀   
    imageColor: '#e00606'// 지문인식 기본 컬러   
    imageErrorColor: '#ff0000'// 지문인식 실패 컬러   
    sensorDescription: 'Touch sensor'// 터치센서 
    description Text 변경   sensorErrorDescription: 'Failed'// 터치센서 Fail Text 변경   
    cancelText: 'Cancel'// Android // 취소버튼 Text 변경   
    fallbackLabel: 'Show Passcode'// ios ( 비어있으면 레이블이 숨겨짐 )   
    unifiedErrors: false// 통합 오류 메시지 사용 ( 기본값 false)   
    passcodeFallback: false  // ios-faceId / touch 사용할 수 없는 경우 기기비밀번호 사용여부 
    } 
    
    TouchID.authenticate('description', optionalConfigObject)
    .then(success => {     
    console.log("지문인식 성공"); // 지문인식 성공했을 때 코드를 넣으면 됨   
    })   	
    .catch(error => {     	
    console.log("지문인식 실패"); // 실패했을 때 코드를 넣으면 됨.   
    });

isSupported ()

import TouchID from 'react-native-touch-id'; 

const optionalConfigObject = {  
	unifiedErrorsfalse  // 통합 오류 메시지 사용 ( 기본값 false )
	passcodeFallback: false // true가 전달되면 기기가 touch id / face id 등에 등록되지 않은
    경우 isSupported에서 오류를 반환하도록 허용합니다. 
    그렇지 않으면 사용자가 등록되지 않은 경우에도 지원되는 방법 만 알려줍니다.(기본값 false) 
    } 
    
    
TouchID.isSupported(optionalConfigObject).then(biometryType => {
    // Success code 
    if (biometryType === 'FaceID'){         
    	console.log('faceId 지원')     
    } 
    else {     
    	console.log('TouchID 지원.');     
    }  
    })
    .catch(error => {
    	// Failure code
    	console.log(error); // 실패했을 때 에러 로그 찍어보기  
    });

Articles