У меня есть экран / компонент React Native, в котором в верхнем левом углу заголовка / заголовка есть кнопка меню. Когда эта кнопка нажата, я хочу создать меню на самом экране / компоненте, чтобы открывать и закрывать его.
По какой-то причине, хотя, как у меня сейчас настроено, при первом нажатии на меню Кнопка, меню открывается, но после этого оно всегда остается открытым и не закрывается, независимо от того, сколько раз я нажимаю кнопку. Кажется, что состояние не обновляется должным образом или что-то в этом роде.
Вот базовый c код, который у меня есть для переключения меню:
const Screen = ({ navigation }) => {
const [showMenu, setShowMenu] = useState(false);
useEffect(() => {
navigation.setParams({
toggleMenu: () => {
setShowMenu(!showMenu);
}
});
}, []);
return (
<View>
{ showMenu &&
<FlatList
// Menu code here.
/>
}
{/* Other screen rendering here. */}
</View>
);
};
Screen.navigationOptions = ({ navigation }) => {
const { params } = navigation.state;
return {
headerLeft: () => {
return (
<TouchableOpacity
onPress={params.toggleMenu}
>
<Text>Menu</Text>
</TouchableOpacity>
);
}
};
};
export default Screen;
Я думаю, что это может быть некоторая проблема закрытия, но я действительно не уверен. Я добавил console.log
к toggleMenu
, и значение showMenu
всегда равно false
, когда я вхожу в функцию, которая затем устанавливает ее на true
, таким образом, пока меню не закроется.
Почему значение showMenu
всегда равно false
, даже после того, как я использую setShowMenu
, чтобы установить его на true
, мне не понятно. У кого-нибудь есть идеи? Спасибо.