I'm doing a simple app chat with react native and firebase realtime database. I listening database change equal function onChildAdded(). It not work when I put the function inside useEffect(), but when I put it outside useEffect was it work. How to put onChildAdded inside useEffect but still work. Thank you so much!
my code here function inside useEffect()
it return value the first time render
useEffect(() => {
getMessages(ROOM_ID, (messages) => {
setData(messages);
});
const refToRoom = ref(getDatabase(app), `messages/room_${ROOM_ID}`);
const myQuery = query(refToRoom);
onChildAdded(
myQuery,
(data) => {
console.log(data);
},
(error) => {
console.log(error);
}
);
return offMessagesChange(ROOM_ID);}, []);
when function outside useEffect it return value when data added
useEffect(() => {
getMessages(ROOM_ID, (messages) => {
setData(messages);
});
return offMessagesChange(ROOM_ID);}, []);
const refToRoom = ref(getDatabase(app), `messages/room_${ROOM_ID}`);
const myQuery = query(refToRoom);
onChildAdded(
myQuery,
(data) => {
console.log(data);
},
(error) => {
console.log(error);
});