【发布时间】:2021-05-21 12:22:57
【问题描述】:
嗨,这是我的第一个问题,所以请放轻松。我是本机反应的新手,我无法使以下代码正常工作:
const [posts, setPost] = useState(props.post);
const [isLiked, setIsLiked] = useState(false);
const onLikePress = async () => {
setPost({likes: posts.items.likes + 1})
};
上述代码的最终目标是增加帖子的点赞数,道具从主页传递并且一切正常,但是然后点击点赞按钮似乎帖子状态为空并且所有字段变为空。
下面是来自世博会的屏幕截图,在按下类似图标之前,道具中的所有内容都显示正常。
感谢任何帮助理解为什么会发生这种情况
编辑:
感谢您的帮助,它现在可以正常工作,但我仍然有点困惑,当我将状态设置为以下所有尝试错误时。
const [posts, setPost] = useState(props.post);
但是如果我把这条线改成
const [posts, setPost] = useState(props.post.item);
我可以更新喜欢的内容
setPost({...posts, likes:posts.likes+1})
谁能帮我理解为什么 props.posts 与 item 和 item 中包含的数据一起传递,这是使用平面列表的怪癖
【问题讨论】:
-
您正在用新的 obj 覆盖帖子状态,您能否提供帖子状态的数据结构示例?
-
您好,感谢您的回复,道具从一个平面列表传递,如下所示,索引:0 项目:cmets:[] 描述:““这是我的错误””喜欢:19 股: 14 songImage: """" videoUri: "d8vywknz0hvjw.cloudfront.net/fitenium-media-prod/videos/…" __v: 0 _id: "602e37930d86848198e599cc"
-
我是新手,如果您想要更好的格式,请告诉我
-
没关系,如果我正确理解您的数据帖子:[...anyProperty, likes:Integer] 结构,这应该可以工作: setPost(posts.map(post=> {return{...post , 点赞:post.likes+1}})
-
嗨,这给出了类型错误 posts.map 不是函数
标签: node.js reactjs react-native