ReactNative로 채팅 UI 구성하기

해당 포스트에서는 기술적인 부분보다는 UI적인 부분에 대해 다루고 있습니다

소켓통신을 비롯한 기본적인 기술얘기는 다루지 않습니다 !

목차

  • React Native에서 이미지 확대, Pinch 기능 사용하기
  • React Native에서 HyperLink Preview 기능 사용하기

    (예시)

React Native에서 이미지 확대, Pinch 기능 사용하기


아래 라이브러리를 사용하면 쉽게 해당 기능을 구현할 수 있습니다 !

https://github.com/dev-yakuza/react-native-image-modal

yarn add react-native-image-modal
<ImageModal
  resizeMode="cover"
  modalImageResizeMode="contain"
  hideCloseButton
  style={[styles.image, { width: layout / 2 }, { height: layout / 2 }]}
  source=
  renderHeader={(close) => (
    <View style={styles.modalCloseView}>
      <TouchableOpacity onPress={close}>
        <Image style={styles.modalCloseIcon} source={CloseIcon} />
      </TouchableOpacity>
    </View>
  )}
/>

files/posts/2021_05/jiwoo/before.png

/files/posts/2021_05/jiwoo/after.png

resizeMode props로 확대하기 전 이미지 사이즈를 정할 수 있으며

modalImageResizeMode props로 확대되어 modal 상태의 이미지의 사이즈를 정할 수 있습니다

아래와 같이 스와이프 동작을 감지하여 확대된 상태의 이미지를 쉽게 축소할 수 있습니다

아름다워라

추가로 renderHeader props를 사용하면 header를 custom 할 수 있습니다.

사용 시, 꼭 hideCloseButton props와 같이사용해주세요!!

React Native에서 HyperLink Preview 기능 사용하기


(예시)

위와 같은 미리보기 기능은 해당 사이트의 meta tag를 읽어서 사이트의 정보를 대략적으로 알려주는 기능입니다 !

메타데이터란 무엇인가? ← 자세한 설명입니다 !

보기에는 어려워 보일 수 있지만 이미 해당 기능을 구현할 수 있도록 라이브러리가 준비되어 있기때문에 우리는 그것을 잘 가공해서 우리 것으로 만들기만 하면 됩니다 !

yarn add link-preview-js

해당 라이브러리는 React-native 기준으로 작성되어 React나 Next.js CORS에러를 내거나 잘 동작하지 않을 수 있으니 참고해주세요 !

import {getLinkPreview} from 'link-preview-js';

getLinkPreview(value)
  .then((data) => {
    sendMessage.metaTitle = data.title;
    sendMessage.metaDesc = data.description;
    sendMessage.metaImage = data.images[0];
		...
		socket.send(sendMessage)
  })

소켓에 보내려고 하는 object에 같이 담아서 보내주면 성공적으로 데이터를 가공할 수 있게 됩니다!

추가적으로 Linking 과 같은 react-native 기본 내장 라이브러리를 사용해서 외부로 링크이동을 하는 동작을 설정해주어 마무리 해줍니다 !

Linking.openURL(TEXT_URL);
jiwoo.seo's profile image

jiwoo.seo

2021-05-16 17:14

Read more posts by this author