인프런 커뮤니티 질문&답변

HappyJay님의 프로필 이미지
HappyJay

작성한 질문수

iOS/Android 앱 개발을 위한 실전 React Native - Basic

api 호출관련 질문해도 될까요?

작성

·

117

0

여러 탭을 구성하고, 회원 탭을 선택했을때
아래처럼 api 를 통해 데이터를 가져오고자 합니다.
api 를 호출하는 시점에 (call axios) 로그를 찍고
실제 가져온 데이터의 내용을 로그로 찍었는데요
call axios 로그는 한번만 출력됐고, 실제 서버 로그도 한번만 나왔는데
데이터로그의 내용이 총 3번 출력이 됩니다.
1. null
2. api 리턴 데이터
3. 2번과 동일한 api 리턴 데이터
혹시 왜 데이터로그가 3번이나 출력되는지 알 수 있을까요?
let membersIMember[] = []

const urlGetMemberList = 'http://localhost:8080/member/getStudentList'

export const MemberList = ({navigation}) => {
    const [datassetDatas] = useState(null);
    const [loadingsetLoading] = useState(false);
    const [errorsetError] = useState(null);

    useFocusEffect(React.useCallback(() => {
        const fetchDatas = async () => {
            try {
                setError(null);
                setDatas(null);
                setLoading(true);

                console.log("call axios")
                const response = await axios.get(urlGetMemberList);

                setDatas(response.data);
            } catch (eany) {
                setError(e);
            }

            setLoading(false);
        };

        fetchDatas();

    }, []))

    console.log(datas)

    if(datas != null) {
        members = []
        console.log(datas.responseBody.length)
        for(let idx = 0idx < datas.responseBody.lengthidx++) {
            members.push(new Member(idxdatas.responseBody.namedatas.responseBody.phonedatas.responseBody.startDatedatas.responseBody.remainCount))
        }
    }

    const renderItem = (itemIMember=> {

        return (
            <TouchableOpacity
                onPress={() => {
                    Alert.alert(item.name)
                    navigation.navigate('borderScreen')
                }}
            >
                <RenderMember member={item} />
            </TouchableOpacity>
        )
    }


    
    return (
        <SafeAreaView>
            <FlatList data={members}
                renderItem={({item}) => renderItem(item)}
                keyExtractor={(itemindex=> item.id.toString()}
                ItemSeparatorComponent={() => <View style={[styles.itemSeprator]} />}
            />
        </SafeAreaView>
    )
}

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
HappyJay님의 프로필 이미지
HappyJay

작성한 질문수

질문하기