Estoy usando el almacenamiento local para almacenar la identificación del usuario y luego enviarlo al estado, luego usarlo para ocultar el botón Me gusta después de hacer clic en él, pero después de hacer clic en el botón Me gusta, no desaparece y al usuario le puede seguir gustando la publicación (muchas veces).
Código de inicio de sesión: aquí almaceno al usuario en localstorage y lo envío.
localStorage.setItem("user",JSON.stringify(data.user)) dispatch({type:"USER",payload:data.user}) history.push('/c')código de usuarioReductor:
export const initialState = null export const reducer = (state,action)=>{ if(action.type==="USER"){ return action.payload } return state }Como funcionalidad:
const likePost = (id)=>{ fetch('/post/like',{ method:"put", headers:{ Accept:"application/json", "Content-Type":"application/json", }, body:JSON.stringify({ postId:id }) }).then(res=>res.json()) .then(result=>{ //console.log(result) const newData = data.map(post=>{ if(post._id===result._id){ return result }else{ return post } }) setdata(newData) }).catch(err=>{ console.log(err) }) }código de interfaz:
{posts.likes.includes(state._id) ?<AiTwotoneDislike size="2em" onClick={()=>{unlikePost(posts._id)}}/> :<AiFillLike size="2em" onClick={()=>{likePost(posts._id)}}/> }El problema principal está solo en este código anterior, toma state._id, pero solo muestra el botón Me gusta después de hacer clic también. He comprobado el estado, contiene _id.