我正在尝试使用 useState 钩子设置一个 const 值:
const [liked, isLiked] = useState(messages?.likes?.some((like)=>like.id === user.id))
这里,当
messages
改变时,liked
值不会更新。我知道我可以使用 useEffect
钩子,但是有没有办法在不使用 liked
钩子的情况下定义 useEffect
值?
useMemo
挂钩。 useMemo
是 基本上 useState
+ useEffect
以保持“同步”。这就是通常所说的“派生状态”,因此将派生状态存储在实际的 React 状态中被认为是一种 React 反模式。
示例:
const liked = useMeo(
() => messages?.likes?.some((like) => like.id === user.id),
[messages, user]
);