더북(TheBook)

8.2.1.3 라우트 파라미터로 회원가입 화면 만들기

이제 회원가입 화면을 만들 차례인데요. 화면 컴포넌트를 새로 만드는 것이 아니라 화면의 라우트 파라미터를 사용해 isSignUp이라는 값이 true일 때 회원가입 화면을 띄워주는 기능을 구현해보겠습니다. 회원가입 화면에서는 비밀번호 확인 인풋이 하나 더 나타나고, 로그인과 회원가입 버튼의 위치가 변경됩니다.

SignInScreen의 Props를 통해 navigationroute를 받아오고, 만약 isSignUp 파라미터 값이 true일 때 다른 UI를 보여주도록 설정하세요. 다음으로 로그인 화면의 회원가입 버튼을 눌렀을 때 파라미터와 함께 새로운 SignInScreen을 띄우고, 회원가입의 로그인 버튼을 눌렀을 때 이전 화면으로 돌아가도록 구현해보세요.

screens/SignInScreen.js

import React from 'react';
import {StyleSheet, Text, View} from 'react-native';
import {SafeAreaView} from 'react-native-safe-area-context';
import BorderedInput from '../components/BorderedInput';
import CustomButton from '../components/CustomButton';

function SignInScreen({navigation, route}) {
  const {isSignUp} = route.params ?? {};
  return (
    <SafeAreaView style={styles.fullscreen}>
      <Text style={styles.text}>PublicGallery</Text>
      <View style={styles.form}>
        <BorderedInput hasMarginBottom placeholder="이메일" />
        <BorderedInput placeholder="비밀번호" hasMarginBottom={isSignUp} />
        {isSignUp && <BorderedInput placeholder="비밀번호 확인" />}
        <View style={styles.buttons}>
          {isSignUp ? (
            <>
              <CustomButton title="회원가입" hasMarginBottom />
              <CustomButton
                title="로그인"
                theme="secondary"
                onPress={() => {
                  navigation.goBack();
                }}
              />
            </>
          ) : (
            <>
              <CustomButton title="로그인" hasMarginBottom />
              <CustomButton
                title="회원가입"
                theme="secondary"
                onPress={() => {
                  navigation.push('SignIn', {isSignUp: true});
                }}
              />
            </>
          )}
        </View>
      </View>
    </SafeAreaView>
  );
}

(...)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.