我是 react-redux 的新手,我想從 Redux 獲取有關提交的資料,如果我成功了,那么我想導航到另一個螢屏,否則會顯示警報。
但是,我只有在第二次點擊后才能成功
代碼 :
const {fetchLoginData} = props;
const data = props;
async function onSubmit() {
fetchLoginData(phoneNo);
//if i get true from fetchLoginData(phoneNo) then navigate to other screen otherwise an alert will show
if(data.login)
props.navigation.navigate('ScreenName')
else
alert("User Not Registered")
}
uj5u.com熱心網友回復:
我不太確定你的元素是如何布局的,但我假設你的可觸摸標簽不夠大。這是我給它的高度為 300 和寬度為 700 的示例。您可以根據需要將其設定為大。
const GradientBtn = () => {
return (
<TouchableOpacity
onPress={() => onSubmit()}
style={{height: 300, width: 700}}>
{/* INSERT BUTTON CODE HERE */}
</TouchableOpacity>
);
};
uj5u.com熱心網友回復:
這是由于異步操作。fetchLoginData()在第一次單擊時運行該功能后立即進行的 data.login 檢查對于第一種情況是不正確的。因此,第一次點擊不會重定向。當您再次單擊時,它會重定向,因為 state 已經為真。
您可以這樣修復它:如果fetchLoginData()函式中的回應已滿,則重定向是正確的。
或者你可以使用這個。您可以在表單設計所在的組件中的任何位置呼叫重定向函式。例如;
<View>
<Form>
....
</Form>
{data.login && props.navigation.navigate('ScreenName')}
</View>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334691.html
標籤:javascript 反应原生 还原 反应还原
