AsyncStorage 找不到变量

AsyncStorage not finding variable

我确定这是某个地方的愚蠢错误,但是当我在 class 组件和功能组件之间切换时(learn/understand 状态在这两种情况下的工作方式)有时我有点想念逻辑( this.props 等)。 (home.js 导航到名为 addDiary.js 的页面) 我还没有完成异步 logic/code 但不明白为什么我此时会收到错误“无法找到变量:日记”,谢谢

Home.js

const Home = ({navigation}) => {
    const [refreshing, setRefreshing] = useState(false);
        const [diary, setDiary] = useState(null)

whenRefresh = async () => {
try{
  setRefreshing(true);
  const diary =  await AsyncStorage.getItem('diary')
  setDiary(JSON.parse('diary'))
  setRefreshing(false)}
  catch (error) {console.log(error)}
} 

    
    return(
          <View style={styles.home}>

                <ScrollView 
                    refreshControl={
                    <RefreshControl 
                    refreshing={refreshing}
                    onRefresh={whenRefresh}/>}
                    style={styles.body}>

                    {diary ? <ListItem
                    title={diary.title}
                    subtitle="test"
                    onPress={()=>{console.log("listitem pressed")}}
                    /> : null}

addDiary.js

const AddDiary = () => {


   const [title, setTitle] = useState()
    const [body, setBody] = useState()
    
const submit = async () => {
    const diary = {title, body}
    await AsyncStorage.setItem('diary', JSON.stringify(diary))
    navigation.goBack()
}


        return(
<SafeAreaView style={styles.home}>
    <View style={styles.group}>
                <Text style={styles.label}>Title:</Text>
                <TextInput
                placeholder="title"
                style={styles.titleInput}
                onChangeText={setTitle}
                value={title}
                />
    </View>

    <View style={[styles.group, {flex:1}]}>
                <Text style={styles.label}>Body:</Text>
                <TextInput
                placeholder="title"
                style={[styles.titleInput, {height: 300}]}
                onChangeText={setBody}
                value={body}
                />
    </View>

                <Button
                name="check-circle" 
                size={50} 
                color="black" 
                onPress={submit}
                />


</SafeAreaView>
        )
}
const submit = async () => {
    const diary = {title, body}
    await AsyncStorage.setItem('diary',JSON.stringify(diary))
    
}

将您的提交功能更改为此。 它应该可以正常工作

const Home = ({navigation}) => {
const [refreshing, setRefreshing] = useState(false);
const [diary, setDiary] = useState(null)
whenRefresh = async () => {
  setRefreshing(true);
  const diary =  await AsyncStorage.getItem('diary')
  setDiary(JSON.parse('diary'))
  setRefreshing(false)

}

return(
      <View style={styles.home}>

            <ScrollView 
                refreshControl={
                <RefreshControl 
                refreshing={refreshing}
                onRefresh={whenRefresh}/>}
                style={styles.body}>

                {diary ? <ListItem
                title={diary.title}
                subtitle="test"
                onPress={()=>{console.log("listitem pressed")}}
                /> : null}