javascript - React useState 和 map()

标签 javascript reactjs

我正在尝试从 map 输入评论, 但由于我使用相同的 useState,所有输入字段都会发生变化。 如何定位特定输入?

return (
  <div>
    {posts.map(post => (
      <div key={post.id}>
        <img
          src={`https://localhost:1111/api/posts/uploads/images/${post.content}`}
          alt={`${post.id}`}
        />
        <p>{post.description}</p>
        <span>{post.likes ? post.likes : 0}</span>
        <button onClick={() => like(post.id)}>Like</button>
        <Link to={`/post/${post.id}`}>Edit</Link>
        <button onClick={() => deletePost(post.id)}>Delete</button>
        <form onSubmit={uploadComment}>
          <input
            type="text"
            onChange={handleComment}
            value={comment}
            placeholder="Comment"
          />
        </form>
      </div>
    ))}
  </div>
)

最佳答案

每个渲染的帖子都有一个自己的状态,这意味着它是自己组件的用例:

function Post(post, deletePost) {
  const [comment, setComment] = useState('');
  const uploadComment = () => {}; // your code is missing
  return (
      <div key={post.id}>
        <img
          src={`https://localhost:1111/api/posts/uploads/images/${post.content}`}
          alt={`${post.id}`}
        />
        <p>{post.description}</p>
        <span>{post.likes ? post.likes : 0}</span>
        <button onClick={() => like(post.id)}>Like</button>
        <Link to={`/post/${post.id}`}>Edit</Link>
        <button onClick={() => deletePost(post.id)}>Delete</button>
        <form onSubmit={uploadComment}>
          <input
            type="text"
            onChange={e => setComment(e.target.value)}
            value={comment}
            placeholder="Comment"
          />
        </form>
      </div>
  )
}

那么你的渲染函数将如下所示:

return (
  <div>
    {posts.map(post => <Post post={post} deletePost={deletePost} />)}
  </div>
)

关于javascript - React useState 和 map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59537961/

相关文章:

javascript - JQ 或 JS : Prevent "a" tag to change url #hash

javascript - 当加载一个 javascript 库时,另一个停止工作

javascript - 使用 Jest 监视默认导出函数

javascript - 使用绑定(bind)传递值

javascript - 未捕获( promise 中)使用SweetAlert2取消

php - 如何根据onchange事件的sequence ID名称取值?

node.js - 为什么来自 Node/Express 的 POST 和 PUT 请求在 React/Redux 中不起作用?我的 GET 和 DELETE 请求一切正常。所有请求都可以在 Postman 中处理

javascript - 包含动态 html 的 React 函数返回未呈现

javascript - Nextjs 中的样式组件延迟设置属性

javascript - 如何从不同类中的函数更改一个类的状态