inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

핸즈온 리액트 네이티브

9.4 :: 닉네임 변경하기

9.4 왜 DisplayName이 한글자밖에 안찍힐까요?

245

Young

작성한 질문수 7

0

프로필 수정하는 부분에서

DisplayName을 넣어서 바꿔보면

 

맨첫 한글자만 가져오게 되는데

 

setDisplayName이 말을 안듣는 것인지...

뭐가 문제인건지 모르겠네요...

 

코드 확인한번만 해주시면 감사하겠습니다.

import { StyleSheet, Text, View, Button, Pressable, TextInput, Keyboard, Alert } from 'react-native';
import PropTypes from 'prop-types';
import { useNavigation } from '@react-navigation/native';
import { useUserState } from '../contexts/UserContext';
import FastImage from '../components/FastImage';
import { MaterialCommunityIcons } from '@expo/vector-icons';
import { GRAY, WHITE } from '../colors';
import HeaderRight from './../components/HeaderRight';
import { useCallback, useEffect, useLayoutEffect, useState } from 'react';
import { updateUserInfo } from '../api/auth';
import SafeInputView from '../components/SafeInputView';

const UpdateProfileScreen = () => {
    const navigation = useNavigation();

    const [user, setUser] = useUserState();
    const [displayName, setDisplayName] = useState(user.displayName);
    const [disabled, setDisabled] = useState(true);
    const [isLoading, setIsLoading] = useState(false);

    const onSubmit = useCallback(async () => {
        Keyboard.dismiss();
        if (!disabled) {
            setIsLoading(true);
            try {
                const userInfo = { displayName };
                console.log(userInfo);
                await updateUserInfo(userInfo);
                setUser((prev) => ({ ...prev, ...userInfo }));
                // navigation.goBack();
                setIsLoading(false);
            } catch (error) {
                Alert.alert('사용자 수정 실패', error.message);
                setIsLoading(false);
            }
        }
    }, [disabled, displayName, navigation, setUser]);

    useEffect(() => {
        setDisabled(!displayName || isLoading);
        console.log('current', displayName);
    }, [displayName, isLoading]);

    useLayoutEffect(() => {
        navigation.setOptions({
            headerRight: () => <HeaderRight onPress={onSubmit} disabled={disabled} />,
        });
    }, [navigation, disabled]);

    return (
        <SafeInputView>
            <View style={styles.container}>
                <View>
                    <View>
                        <FastImage source={{ uri: user.photoURL }} style={styles.photo}></FastImage>
                        <Pressable onPress={() => {}} style={styles.imageButton}>
                            <MaterialCommunityIcons name="image" size={20} color={WHITE} />
                        </Pressable>
                    </View>
                    <TextInput
                        value={displayName}
                        onChangeText={(text) => setDisplayName(text.trim())}
                        style={styles.input}
                        placeholder="NickName"
                        textAlign="center"
                        maxLength={10}
                        returnKeyType="done"
                        autoCapitalize="none"
                        autoCorrect={false}
                        textContentType="none"
                    />
                </View>
            </View>
        </SafeInputView>
    );
};

react-native

답변 1

0

김범준

안녕하세요,

 

질문을 할 때 프로젝트 전체 코드를 깃헙에 올리고 레포 링크와 함께 상세한 상황설명을 함께 남겨주세요.

그래야 정확한 확인이 가능합니다.

 

닉네임을 변경하기 위해 화면에서 닉네임을 입력하면 첫 글자만 나타난다는 얘기인가요?

올려주신 코드를 봤을때는 특별히 오타나 문제가 보이지 않습니다.

 

코드 전체를 올려주시면 조금 더 확인해 보겠습니다.

추가로 문제가 발생한 상황에서 어떤 값을 입력했는지도 함께 알려주세요.

감사합니다.

expo 가 업데이트 되면서 문제가 발생한거같습니다.

0

354

2

navigation.replace() 작동하지 않습니다.

0

152

2

UpdateProfileScreen 에서 사진 버튼 클릭시 오류발생.

0

137

2

닉네임 수정 후 확인 버튼을 누를시 한글자만 출력됩니다.

0

180

2

모달창에서 버튼이 출력되지 않습니다.

0

108

2

로그인 에러 출력시 default값만 나옵니다.

0

151

2

안드로이드 기기에서 SignUp 화면 관련 질문드립니다.

0

94

2

간단한 질문 하나만 드리겠습니다!

0

80

2

text.trim() 부분에서 오류가 발생합니다.

0

130

2

profile 화면에서 내가 쓴 글이 나타나지 않습니다.

0

145

2

글 저장시 파일 저장위치 관련 질문드립니다!

0

117

2

구글 지도 API 관련 오류로 질문드립니다!

0

149

1

HeaderRight 버튼이 작동하지 않습니다.

0

94

2

사진이 나오지 않는 문제로 질문드립니다.

0

118

2

defaultProps 관련 문의 드립니당

0

252

2

이미지 목록을 받아오는 부분에서 IOS 에서 문제가 발생합니다.

0

135

2

안드로이드 기기에서 헤더 부분이 작동이 안됩니다.

0

92

2

[TypeError: unsubscribe is not a function (it is undefined)] 오류 발생으로 질문드립니다.

0

114

2

7.15 :: 상태 변수와 컴포넌트 언마운트 관련 질문드립니다!

0

104

2

SIgnIn SignUp 화면이 안나옵니다.

0

130

2

마지막 useEffect 부분 질문드립니다.

0

104

2

ImagPickerScreen을 만드는 과정에서 문제가 발생하여 글을 남깁니다.

0

213

2

eslint.config.mjs 파일에 plugin 설정방법

0

752

1

ESLint.json 파일이 생성되지 않습니다.

0

242

2