Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React'中获取Get请求;无法读取属性';未定义的地图';_Javascript_Reactjs_Fetch - Fatal编程技术网

Javascript 在React'中获取Get请求;无法读取属性';未定义的地图';

Javascript 在React'中获取Get请求;无法读取属性';未定义的地图';,javascript,reactjs,fetch,Javascript,Reactjs,Fetch,我正在尝试在React中发出获取请求。我是新手,在理解响应结构方面有点困难。我目前正在用这段代码访问一个服务器,并试图将其放入一个表中。但我一直收到错误未处理的拒绝(TypeError):无法读取未定义的属性“map”。谁能告诉我哪里出了问题,或者该怎么办 const [rowData, setRowData] = useState([]); const columns = [ { headerName: "Stock", field: "name"}, { header

我正在尝试在React中发出获取请求。我是新手,在理解响应结构方面有点困难。我目前正在用这段代码访问一个服务器,并试图将其放入一个表中。但我一直收到错误
未处理的拒绝(TypeError):无法读取未定义的属性“map”
。谁能告诉我哪里出了问题,或者该怎么办

const [rowData, setRowData] = useState([]);

  const columns = [
    { headerName: "Stock", field: "name"}, 
    { headerName: "Symbol", field: "symbol" }, 
    { headerName: "Industry ", field: "industry" }
  ];

useEffect(() => {
    fetch("PRIVATE SERVER")
    .then(res => res.json())
    .then(json => console.log(json))
    .then(data => 
      data.map(stocks => {
        return {
          name: stocks.name,
          symbol: stocks.symbol,
          industry: stocks.industry,
        };
      })
    )
    .then(stocks => setRowData(stocks));
  }, []);
这是一个来自服务器的JSON响应的示例:

[
  {
    "name": "Agilent Technologies Inc",
    "symbol": "A",
    "industry": "Health Care"
  },
  {
    "name": "American Airlines Group",
    "symbol": "AAL",
    "industry": "Industrials"
  }
]

问题实际上在于你对then的使用。您应该尝试在代码上使用不同的方法

比如说

  const [rowData, setRowData] = useState([]);

  const columns = [
    { headerName: "Stock", field: "name"}, 
    { headerName: "Symbol", field: "symbol" }, 
    { headerName: "Industry ", field: "industry" }
  ];

useEffect(() => {
    fetch("PRIVATE SERVER")
    .then(res => res.json()
       .then(json => {
          console.log(json);
          const newRowData = json.map(stocks => {
             return {
                name: stocks.name,
                symbol: stocks.symbol,
                industry: stocks.industry,
             };
          });
          setRowData(newRowData);
       }));
但是为了代码可读性,我建议您尝试使用async Wait

const [rowData, setRowData] = useState([]);

  const columns = [
    { headerName: "Stock", field: "name"}, 
    { headerName: "Symbol", field: "symbol" }, 
    { headerName: "Industry ", field: "industry" }
  ];

useEffect(() => {
   async function doFetch() {
      const fetchResponse = await fetch('PRIVATE SERVER', { method: 'GET' });
      if (response.status !== 200) // do something

      // extract the json string to json object
      const data = await fetchResponse.json();

      const newRowData = data.map(stocks => ({
         name: stocks.name,
         symbol: stocks.symbol,
         industry: stocks.industry,
      }));

      setRowData(newDataRow);
   }
。然后(json=>console.log(json))
未定义的
传递到下一个
。然后
。。。因为这就是console.log返回的结果-要么在最后一个.then中执行console.log,要么,如果必须,可以执行
。然后(json=>(console.log(json),json))