我已经用典型代码的GET方法对帖子进行了排序.现在我想使用POST方法自己添加它.我怎样才能正确地做这件事?

这里的问题是,即使它被发布了,它也不会出现在帖子列表中.我希望当我自己添加它并在排名中看到它时,它会出现在所有帖子中.我该怎么做呢?

import axios from "axios";
import React from "react";
import { useState } from "react";
import { useNavigate } from "react-router-dom";
const Form = ({ mainData, setData }) => {
  const [formData, setFormData] = useState({
    title: "",
    body: "",
  });

  const history = useNavigate();

  const onChange = (e) => {
    setFormData({[e.target.name]: e.target.value });
  };

  const onSubmit = (e) => {
    e.preventDefault();
    history("/");
    axios
      .post("https://jsonplaceholder.typicode.com/posts", formData)
      .then((res) => {
        console.log(res);
      });
  };
  return (
    <form onSubmit={onSubmit}>
      <input
        type="text"
        placeholder="your title"
        name="title"
        value={formData.title}
        onChange={onChange}
      />
      <input
        type="text"
        placeholder="body"
        name="body"
        value={formData.body}
        onChange={onChange}
      />
      <button type="submit">Submit</button>
    </form>
  );
};

export default Form;
import React from "react";
import axios from "axios";
import { useEffect, useState } from "react";
import { NavLink } from "react-router-dom";

const Posts = ({mainData, setData}) => {

  useEffect(() => {
    axios
      .get("https://jsonplaceholder.typicode.com/posts")
      .then((res) => res)
      .then((res) => {
        setData(res.data);
        console.log(mainData);
      });
  }, []);
  return (
    <>
      <NavLink to="/new">Add new post</NavLink>
      {mainData?.map((item, index) => (
        <h4 key={index}>
          {item.id} : {item.title}
        </h4>
      ))}
    </>
  );
};

export default Posts;
import React, {useState} from "react";
import { BrowserRouter, Route, Routes } from "react-router-dom";
import Form from "../Form";
import Posts from "../Posts";
const Rout = () => {

  const [mainData, setData] = useState([]);

  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Posts mainData={mainData} setData={setData}/>} ></Route>
        <Route path="/new" element={<Form mainData={mainData} setData={setData}/>}></Route>
      </Routes>
    </BrowserRouter>
  );
};

export default Rout;

推荐答案

向JSONPlacehold发出的post请求只是为了测试,它并没有真正注册到它的数据库中.下面引用他们的doc句话:

重要提示:资源不会在服务器上真正更新,但它将是伪造的.

当您重定向到"/"时,Posts将获取数据,但它不会包含您刚刚在Form中添加的内容.

Javascript相关问答推荐

为什么JavaScript双边字符串文字插值不是二次的?

一次仅播放一个音频

ReactJS中的material UI自动完成类别

React存档iframe点击行为

IMDB使用 puppeteer 加载更多按钮(nodejs)

使用续集和下拉栏显示模型属性

防止用户在selectizeInput中取消 Select 选项

我应该绑定不影响状态的函数吗?'

在网页上添加谷歌亵渎词

当作为表达式调用时,如何解析方法decorator 的签名?

为什么JPG图像不能在VITE中导入以进行react ?

使用父标签中的Find函数查找元素

FireBase云函数-函数外部的ENV变量

在不扭曲纹理的情况下在顶点着色器中旋转UV

是否可以将异步调用与useState(UnctionName)一起使用

不协调嵌入图片

使用API调用的VUE 3键盘输入同步问题

react 路由如何使用从加载器返回的数据

使用Library chart.js在一个带有两个y轴的图表中绘制两个数据集

单击时同时 Select 和展开可访问的行