سلام آقای قربانی، خسته نباشید.
من این سوال رو در سوال با عنوان (پاک شدن کوئری های کش شده ی RTKQuery بعد از 60 ثانیه-2) پرسیده بودم ازتون ولی چون متاسفانه من هنوز به جواب نرسیدم، مجبور شدم با عنوان جدید در این قسمت ازتون دوباره بپرسم.
فکر منظورم رو با توجه به توضیحات هنوز متوجه نشدید، یک مثال دیگه میزنم.
در صفحه UserPage.jsx وقتی صفحه رو بعد از 60 ثانیه رفرش میکنم اشتراک رو نگه نمیداره و صفحه UserPage.jsx با رفرش کردن بعد از 60 ثانیه پیام (چیزی پیدا نکردم متاسفانه) رو نشون میده. در صورتی که داریم از useGetBlogsQuery استفاده می کنیم که داره از RTKQuery استفاده میکنه.
توجه: در صفحه UserPage.jsx کد زیر بلااستفاده است.
const user = useSelector((state) => selectUserById(state, userId));کد صفحه UserPage.jsx :
const { userId } = useParams();
const user = useSelector((state) => selectUserById(state, userId));
const selectUserBlogs = useMemo(() => {
const emptyArray = [];
return createSelector(
(res) => res.data,
(res, userId) => userId,
(data, userId) =>
data?.filter((blog) => blog.user === userId) ?? emptyArray
);
}, []);
const { userBlogs } = useGetBlogsQuery(undefined, {
selectFromResult: (result) => ({
...result,
userBlogs: selectUserBlogs(result, userId),
}),
});
const blogTitles = userBlogs.map((blog) => (
<li key={blog.id}>
<Link to={`/blogs/${blog.id}`}>{blog.title}</Link>
</li>
));
return (
<section>
<h2>{user.fullname}</h2>
<ul>
{userBlogs.length > 0 ? (
blogTitles
) : (
<li style={{ listStyleType: "none" }}>
نویسنده ما هیچ پستی تا به الان منتشر نکرده 🤗
</li>
)}
</ul>
</section>
);