-
Why can't I get the latest value of useState in subscribe? import { useEffect, useState } from "react";
import { useLocalStorage } from "react-use";
import { supabase } from "src/lib/initSupabase";
const Demo = () => {
const [editMode, setEditMode] = useState(false);
const [commentTracking, setCommentTracking] = useLocalStorage("commentTracking", false);
useEffect(() => {
supabase
.from("comments")
.on("INSERT", (payload) => {
console.log(editModeParent);
console.log(commentTracking);
})
.subscribe();
}, []);
return (
<div>
<button
onClick={() => {
return setEditMode(!editMode);
}}
>
Button1
</button>
<button
onClick={() => {
return setCommentTracking(!commentTracking);
}}
>
Button2
</button>
</div>
);
}; |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 15 replies
-
This is an issue with stale closure in |
Beta Was this translation helpful? Give feedback.
-
@VictorPeralta Thanks! import { useEffect, useState } from "react";
import { useLocalStorage } from "react-use";
import { supabase } from "src/lib/initSupabase";
const Demo = () => {
const [editMode, setEditMode] = useState(false);
const [commentTracking, setCommentTracking] = useLocalStorage("commentTracking", false);
useEffect(() => {
supabase
.from("comments")
.on("INSERT", (payload) => {
console.log("commentTracking: " + commentTracking);
})
.subscribe();
}, [editMode, commentTracking]);
return (
<div>
<button
onClick={() => {
return setEditMode(!editMode);
}}
>
Button1
</button>
<button
onClick={() => {
return setCommentTracking(!commentTracking);
}}
>
Button2
</button>
</div>
);
}; |
Beta Was this translation helpful? Give feedback.
@VictorPeralta Thanks!
When I add
editMode
to the array in this code and insert it, I get console.log output over and over again.It is not possible to get the exact value.