我正在构建一个乘车共享应用程序来学习 react-native。为了发布一个新的 Ride,我有一个根据状态Modal
呈现的条件,step
并且每个步骤都有一个不同的 UI。像:
let screen;
if (step===1){
ecraStep=<Screen1/>
} if (step===2){
ecraStep=<Screen2/>
} ...
On step=1
(这是初始值)我希望callBack按钮关闭Modal
并且每当step> 1我希望它调用以下函数:
function togglePreviousStep() {
setStep(step-1);
};
这本质上是回到最后一个渲染的屏幕。Modal
我已经通过在函数组件中写入它来尝试它:
useFocusEffect(
React.useCallback(() => {
const onBackPress = () => {
if (step>1) {
togglePreviousStep();
return true;
} else if (step===1) {
props.closeModal();
return false;
}
};
BackHandler.addEventListener('hardwareBackPress', onBackPress);
return () =>
BackHandler.removeEventListener('hardwareBackPress', onBackPress);
}, [step, togglePreviousStep])
);
但是,无论step
状态如何,每当我按下 backButton 时,它都会关闭Modal
. 我不明白我做错了什么。
已编辑
我实施了Modal
from react-native-modal
。我使用了这样的道具onBackButtonPress
:
<Modal
onBackButtonPress={props.onBackButtonPress}
visible={showModal}
//...
>
<NewRidesModal
//...
/>
</Modal>
在模态屏幕中,我写道:
if (step===1) {
onBackPressButton=(() => props.closeModal());
} else if (step>1){
onBackPressButton=(() => togglePreviousStep())
}
但是,当我按下 android 后退按钮时,它仍然会关闭模式...