티스토리 뷰
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
서드파티의 네이티브용 SDK로 만든 컴포넌트를 React Native 에서 사용하고 싶어서 조사해봤습니다. 공식은 영어를 읽을 수 있다고 해도 설명이 부족하거나 쓸데없는 내용이 많아서 이해하기 힘들다고 생각했습니다.
저는 안드로이드 자바 초심자이기 때문에 나쁘게 생각하지 말아주세요. 프로퍼티 설정이나, 타 API 사용은이런저런 설정이 필요합니다.
iOS는 이쪽에서 확인해주세요.
공식 문서
https://facebook.github.io/react-native/docs/native-components-android.html
가장 심플한 코드
- Native Component의 Name 과 View 인스턴스를 반환하는 Manager 클래스를 작성합니다.
- Manager클래스(그리고 다른 Java module)를 포괄하는 Package를 작성
- Package를 MainApplication.java 에 등록
- Manager클래스에서 지정한 이름을 사용해서 JavaScript에서 호출한다.
ExampleManager.java
package com.example;
import android.widget.TextView;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
public class ExampleManager extends SimpleViewManager<TextView> {
public static final String REACT_CLASS = "Example";
// Component name that will be called from JavaScript
@Override
public String getName() {
return REACT_CLASS;
}
// Return the view component instantiated with Activity context
@Override
public TextView createViewInstance(ThemedReactContext reactContext) {
TextView mTextView = new TextView(reactContext.getCurrentActivity());
return mTextView;
}
}
ExamplePackage.java
package com.example;
import java.util.Arrays;
import java.util.List;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
public class ExamplePackage implements ReactPackage {
// Expose Java components to JavaScript
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(
new ExampleManager()
);
}
}
MainApplication.java
public class MainApplication extends Application implements ReactApplication {
...
// Register the new package
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new ExamplePackage() // New
);
}
...
}
App.js
import React from 'react';
import { requireNativeComponent } from 'react-native';
const Example = requireNativeComponent('Example', null);
export default class App extends React.Component {
render() {
return (
<Example />
);
}
});
'프로그래밍 > REACT NATIVE' 카테고리의 다른 글
[번역] React Native MobX 특집 1편 : 상태관리를 redux에서 mobX로 바꾼 이유 (0) | 2017.12.07 |
---|---|
[번역] React Native LifeCycle 한번에 정리하기! (0) | 2017.12.06 |
[번역] React Native에서 Native UI Component를 사용해보자(iOS편) (0) | 2017.12.05 |
리액트 네이티브 프로젝트를 시작해보자. (2) (0) | 2017.09.26 |
리액트 네이티브 프로젝트를 시작해보자. (1) (0) | 2017.09.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 여행
- 안드로이드
- 일본여행
- 덴뿌라
- Redux
- 수요미식회
- 도쿄
- 도쿄맛집
- 을지면옥
- 쿠로키 하루
- android
- 중쇄를찍자
- 리액트
- Qiita
- 우래옥
- observable
- mobx
- react native
- 평양면옥
- 을지로3가
- 편육
- 리액트 네이티브
- 리액트네이티브
- 맛집
- 일드
- 평양냉면
- 필동면옥
- 브이로그
- 야키니쿠
- 청계천 맛집
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함