با سلام خدمت استاد
جلسه 112 رو مانند کد شما نوشتم و اجرا کردم نمی دونم چرا getNotes را پیدا نمی کند لطفا راهنمایی بفرمایید مرسی
import Realm from 'realm';
const NoteSchema = {
name: 'Note',
properties: {
_id: 'string',
title: 'string',
content: 'string',
},
primaryKey: '_id',
};
export const realmDb = async () => {
return await Realm.open({schema: [NoteSchema], schemaVersion: 1});
};
import React, {useEffect, createContext, useState} from 'react';
import {Alert} from 'react-native';
import {realmDb} from '../db/db';
export const NoteContext = createContext();
export const NoteProvider = props => {
const [getNotes, setNotes] = useState([]);
useEffect(() => {
const getData = async () => {
try {
await dataAction('Sync');
} catch (err) {
console.log(err);
}
};
getData();
}, []);
const addNote = async note => {
await dataAction('Add', note);
await dataAction('Sync');
};
const updateNote = async (note, id) => {
await dataAction('Update', note, id);
await dataAction('Sync');
};
const deleteNote = async id => {
await dataAction('Delete', null, id);
await dataAction('Sync');
};
const dataAction = async (action, note, id) => {
try {
const realm = await realmDb();
switch (action) {
case 'Sync':
const notes = realm.objects('Note');
return setNotes(notes);
case 'Add':
return realm.write(() => {
realm.create('Note', note);
});
case 'Update':
return realm.write(() => {
const dbNote = realm.objectForPrimaryKey('Note', id);
dbNote.title = note.title;
dbNote.content = note.content;
});
case 'Delete':
return realm.write(() => {
realm.delete(realm.objectForPrimaryKey('Note', id));
});
}
realm.close();
} catch (err) {
console.log(err);
Alert.alert('خطای یاداشت', 'خطایی در ارتباط با پایگاه داده پیش آمده');
}
};
return (
<NoteContext.Provider value={{getNotes: getNotes, addNote, updateNote, deleteNote}}>
{props.children}
</NoteContext.Provider>
);
};
import React, {useCallback, useState, useContext} from 'react';
import { SafeAreaView, View, FlatList, StyleSheet, StatusBar ,TouchableOpacity,} from 'react-native';
import { Button, Center, HStack, NativeBaseProvider, Pressable ,Text,Icon,Box} from 'native-base';
import { useFocusEffect } from '@react-navigation/native';
import Layout from '../Component/Layout';
import { NoteContext } from '../Context/NoteContext';
import NoteContent from '../Component/NoteContent';
const HomeScreen = props => {
const [notes, setNotes] = useState([]);
const context=useContext(NoteContext);
useFocusEffect(
useCallback(() => {
setNotes(context.getNotes);
}, [context.getNotes]),
);
return (
<NativeBaseProvider>
<Layout title="یادداشتهای من"
footer={<Button full bg="violet.800" onPress={() => props.navigation.navigate('ADD')}>
<Text fontWeight={'bold'} color={'white'} style={{fontFamily: 'Vazir'}}>اضافه کردن یاداشت جدید</Text>
</Button>}>
<FlatList
data={notes}
keyExtractor={note => note._id}
renderItem={note => (
<TouchableOpacity
onPress={() =>
props.navigation.navigate('Update', {id: note.item._id})
}>
<NoteContent note={{...note}} />
</TouchableOpacity>
)}
/>
</Layout>
</NativeBaseProvider>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop: StatusBar.currentHeight || 0,
},
item: {
backgroundColor: '#f9c2ff',
padding: 20,
marginVertical: 8,
marginHorizontal: 16,
},
title: {
fontSize: 20,
},
});
export default HomeScreen;
import React,{useState} from 'react';
import {
Container,
Center,
Heading,
Header,
Footer,
FooterTab,
Title,
NativeBaseProvider,
StatusBar,
Box,
HStack,IconButton,Icon,Text, Pressable
} from 'native-base';
export default Layout = ({children, title,footer}) => {
return (
<NativeBaseProvider>
<HStack bg="violet.800" px="1" py="3" justifyContent="space-between" alignItems="center" w="100%" maxW="390">
<Text color="white" fontSize="20" fontWeight="bold" alignSelf={"center"} alignContent="center" alignItems={'center'}>
{title}
</Text>
</HStack>
{children}
{footer}
</NativeBaseProvider>
);
};
سلام دوست من
کدهایی که در کنار ویدئو قرار دادم و کپی پیست کن به جای کدهای خودت ببین کار میکنه؟
اگر کار کرد باید خط به خط بررسی کنی چون اینجور خطاها برمیگرده به یک مشکل تایپی بسیار کوچک یا فراموش کردن یک () و ...
بررسی کن و بازم اگر مشکل بود خبر بده
استاد سلام
من خیلی به NoteContext و نحوه export شدن getNotes شک دارم چون در فایل homescreen
در قسمت
useFocusEffect(
useCallback(() => {
setNotes(context.getNotes);
}, [context.getNotes]),
);
اصلا توسط کد هوشمند vs پیشنهاد نمی شود. هنوز مشکل getNotes پیدا نشد وجود دارد
ممنون مرسی