0

Ich habe ein Problem mit Catch-Block, der nicht funktioniert und einen Fehler wirft.Catch-Block: kann Eigenschaft "Fang" von undefined nicht lesen

Dieser Fehler kam, als ich fügte hinzu, dass NetInfo if-else Block vor dem Hinzufügen der Block es funktionierte, aber nach dem Hinzufügen dieser Fehler angezeigt. Hier ist mein Code in login.js

componentDidMount() { 
const { navigate } = this.props.navigation; 
NetInfo.isConnected.fetch().done((isConnected) => { 
if (isConnected) 
{ 
    return fetch('http://10.42.0.1:8000/stocks/', 
{ 
    method: "GET", 
    headers: { 
    'Authorization': `JWT ${"eyJhbGciOiJIUz1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNhbSIsInVzZXJfaWQiOjYxLCJlbWFpbCI6IiIsImV4cCI6MTUwNDAzNDUzOX0.d3tbOUS_0L9RzkWA30DT8mv7v7j0XuxnRuI_luhuNzI"}` 
    } 
}) 
    .then((response) => response.json()) 
    .then((responseJson) => { 
    if (!responseJson.post){ 
    navigate("Login"); 
    }else 
    { 
    let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); 
    this.setState({ 
    isLoading: false, 
    sa: ds.cloneWithRows(responseJson.post), 
    }); 
    } 
}) 
}else 
{ 
    navigate("Login"); 
    Alert.alert(
    'Check Internet connection', 
    ) 
} 
}).catch((error) => { 
    console.log(error); 
    }) 
} 

enter image description here

wo ich falsch bin? Bitte helfen Sie ...

Antwort

1

Versuchen Sie, Ihre .done zu einem .then zu ändern.

Ich würde auch vorschlagen, einige dieser Logik in separate Funktionen zu extrahieren, um es sich selbst zu erleichtern zu lesen ... Viele Klammern und Parens überall!

+0

ja ... vielen Dank es funktioniert, Aber warum ist so was Grund dafür, können Sie bitte erklären? –

+0

@mayureshpatil .done ist das letzte Element in Ihrer Kette, eine abschließende Anweisung, wenn Sie so wollen. Hier sind einige gute Infos dazu. http://exploringjs.com/es6/ch_promises.html#sec_additional-promise-methods – basudz

Verwandte Themen