저장 버튼이 생기지 않습니다.
저장 버튼을 동일하게 작성했는데 화면상에 그려지지 않더라구요. 공식문서도 확인해보고 찾아보는데, isFocused나 useLayoutEffect등을 통해 실험해봐도 저장 버튼이 보이지 않습니다.
무엇을 잘못 작성했나 싶어 자료를 다운로드 받아 post 의 _layout.tsx 와 write.tsx도 복사, 붙여넣기 하여 확인했는데도 저장버튼이 보이지 않았습니다.
그런데, post의 _layout에서 headerRight을 작성하니 보입니다.
setOptions가 동작하지 않는 것 같이 보이는데, 원인을 잘 모르겠습니다.
어떻게 해결하면 될까요?
import CustomButton from "@/components/CustomButton";
import DescriptionInput from "@/components/DescriptionInput";
import TitleInput from "@/components/TitleInput";
import useCreatePost from "@/hooks/queries/useCreatePost";
import { ImageUri } from "@/types";
import { useNavigation } from "expo-router";
import { useEffect } from "react";
import { FormProvider, useForm } from "react-hook-form";
import { StyleSheet } from "react-native";
import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view";
type FormValues = {
title: string;
description: string;
imageUris: ImageUri[];
};
export default function PostWriteScreen() {
const navigation = useNavigation();
const createPost = useCreatePost();
const postForm = useForm<FormValues>({
defaultValues: {
title: "",
description: "",
imageUris: [],
},
});
const onSubmit = (formValues: FormValues) => {
createPost.mutate(formValues);
};
useEffect(() => {
navigation.setOptions({
headerRight: () => (
<CustomButton
label="저장"
size="medium"
variant="standard"
onPress={postForm.handleSubmit(onSubmit)}
/>
),
});
}, []);
return (
<FormProvider {...postForm}>
<KeyboardAwareScrollView contentContainerStyle={styles.container}>
<TitleInput />
<DescriptionInput />
</KeyboardAwareScrollView>
</FormProvider>
);
}
const styles = StyleSheet.create({
container: {
margin: 16,
gap: 16,
},
});
import { colors } from "@/constants";
import { Feather } from "@expo/vector-icons";
import { Link, Stack } from "expo-router";
export default function PostLayout() {
return (
<Stack
screenOptions={{
headerTintColor: colors.BLACK,
contentStyle: {
backgroundColor: colors.WHITE,
},
}}
>
<Stack.Screen
name="write"
options={{
title: "글쓰기",
headerShown: true,
headerLeft: () => (
<Link href={"/"} replace>
<Feather name="arrow-left" size={28} color={"black"} />
</Link>
),
}}
/>
</Stack>
);
}
+추가로 확인한 부분.
app의 _layout.tsx에서
<Stack.Screen name="post" options={{ headerShown: false }} />이 친구를 주석하면 헤더가 두 개 나오게 되는데, 숨겨놨던 루트에 저장 버튼이 떠 있더라구요.

이걸 어떻게 수정하면 되는건지.. 어렵네요
답변 2
0
해결하신 분 계신가요? navigation.setOptions()가 부모 네비에만 적용되네요. post/_layout에서 만드는 네비에 적용이 안됩니다.
secureTextEntry 설정에 관해
0
58
2
expo 55 tabs 사라짐 이슈
0
83
2
백엔드도 궁금합니다!
1
86
1
댓글 버튼 하단에 고정되지 않는 이슈
0
53
1
SafeAreaView 적용 기준 문의
0
82
2
스크린 옵션 아이콘
0
56
2
[Note] 안드로이드 네비게이션 헤더 이슈 안내
0
67
2
ActionSheet
0
87
1
안드로이드 폰과 PC에서 테스트할때 화면 안보임과 오류 문의
0
99
1
iOS 빌드 후 실기기에서 앱 시작
1
71
1
[5-2] 글 목록 무한스크롤 구현하기 with InfiniteQuery 10:40/ useScrollTop(ref) 사용관련
0
84
2
클라이언트 사이드에서 세션 관련 질문
0
82
2
Android 에뮬레이터 환경설정 및 실행 (for Mac) 에러 문의
0
113
1
[5-13] useLikePost 쿼리 구현 중 Tanstack Query 관련 질문
0
63
1
Expo 54 버전 ios에서 headerLeft
1
140
2
어플 개발 후 배포 시에 주의할 사항이 있을까요?
0
79
1
코드 수정 시 ios 시뮬레이터에서 자동반영이 안 되는데 왜그럴까요?
0
92
1
텍스트가 다 상단위로 올라가있는데 어떻게 해야할까요?
0
78
2
Axios Network error...
0
151
2
강의는 52버전인데 expo가 현재 54버전이에요
0
310
1
[TIP] SafeAreaView 사용할 때마다 자꾸 ios에서 위아래가 빵꾸 나시는 분들 필독
0
238
2
키보드 이슈 관련 해결 질문
0
74
1
android header를 ios처럼 바꾸기
0
70
1
CustomButton 코드 버튼 관련 질문
0
66
1





