Reactjs 如何基于函数调用重新呈现react组件?

Reactjs 如何基于函数调用重新呈现react组件?,reactjs,Reactjs,我试图从RESTAPI调用中呈现列表,并在添加、删除或更新新项时重新呈现它 import React, { useState, useEffect } from 'react'; import axios from 'axios'; function App() { const [data, setData] = useState({}); useEffect(() => { const fetchData = async () => { const re

我试图从RESTAPI调用中呈现列表,并在添加、删除或更新新项时重新呈现它

import React, { useState, useEffect } from 'react';
import axios from 'axios';
function App() {
  const [data, setData] = useState({});
  useEffect(() => {
    const fetchData = async () => {
      const result = await axios(
        'https://hn.algolia.com/api/v1',
      );
      setData(result.data);
    };
    fetchData();
  }, [fetchData]);


  const handleClick = () => {
    fetchData();
  }

  return (
    <button onClick={handleClick}>Go</button>
  );
}
export default App;
import React,{useState,useffect}来自“React”;
从“axios”导入axios;
函数App(){
const[data,setData]=useState({});
useffect(()=>{
const fetchData=async()=>{
常量结果=等待axios(
'https://hn.algolia.com/api/v1',
);
setData(result.data);
};
fetchData();
},[fetchData]);
常量handleClick=()=>{
fetchData();
}
返回(
去
);
}
导出默认应用程序;
当组件加载时,它执行
useffect
方法,但当我单击“Go”按钮时,它不工作。 有没有办法执行RESTAPI调用并刷新对象列表


谢谢。

您可以创建一个state属性,并在onClick处理程序中进行切换。然后在useEffect的依赖项数组中使用此属性

import React,{useState,useffect}来自“React”;
从“axios”导入axios;
函数App(){
const[data,setData]=useState({});
const[refetch,setRefetch]=useState(true);
useffect(()=>{
const fetchData=async()=>{
常量结果=等待axios(
'https://hn.algolia.com/api/v1',
);
setData(result.data);
};
fetchData();
},[refetch]);
常量handleClick=()=>{
设置重新蚀刻(!重新蚀刻);
}
返回(
去
);
}
导出默认应用程序;

数据
变量添加到数组中,该变量用于检查
useffect
方法中发生的变化。只要
数据
变量发生更改,它就应该重新呈现

useEffect(() => {
    const fetchData = async () => {
      const result = await axios(
        'https://hn.algolia.com/api/v1',
      );
      setData(result.data);
    };
    fetchData();
  }, [fetchData, data]);

首先,您使用了错误的端点。请测试您的端点,它使用id工作。您不需要useEffect通过单击事件加载数据

import React, { useState } from "react";
import ReactDOM from "react-dom";
import axios from "axios";

const fetchData = async () => {
  const result = await axios("https://hn.algolia.com/api/v1/items/1");
  return result.data;
};

function App() {
  const [data, setData] = useState(null);

  const handleClick = async () => {
    const x = await fetchData();
    setData(x);
  };

  return (
    <>
      <button onClick={handleClick}>Go</button>
      {data && data.id}
    </>
  );
}
export default App;
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
import React,{useState}来自“React”;
从“react dom”导入react dom;
从“axios”导入axios;
const fetchData=async()=>{
常量结果=等待轴(“https://hn.algolia.com/api/v1/items/1");
返回结果数据;
};
函数App(){
const[data,setData]=useState(null);
const handleClick=async()=>{
const x=等待获取数据();
setData(x);
};
返回(
去
{data&&data.id}
);
}
导出默认应用程序;
const rootElement=document.getElementById(“根”);
ReactDOM.render(