【问题标题】:Not able to see output of state using react hooks (useState) after fetch获取后无法使用反应挂钩(useState)查看状态输出
【发布时间】:2020-04-12 11:28:14
【问题描述】:

我对做出反应还很陌生,所以我确定我错过了一些非常简单或离题的东西。我正在尝试完成一个简单的 axios api 获取并将响应设置为状态。我能够在控制台日志中看到数据,但是当我尝试将其设置为状态时似乎没有发生任何事情。在各种博客的帮助下,我尝试了 useState、useEffect、useReducer 方法,但我看不到输出,所以我绝对没有做对。

编辑:我试图在页面加载时执行此操作,而不是在点击事件时执行此操作。

我能够在反应 (https://reactjs.org/docs/hooks-state.html) 上获得可用的反例,以便在没有任何问题的情况下工作。我正在关注几个博客中的混合示例,但无法看到结果。

https://www.andreasreiterer.at/rest-api-react-hooks/

最终我想将 api 中的数据合并到 Material table ui中

任何有用的见解将不胜感激。在过去的两天里,我一直坚持这些。

function LandingPage = () => {

    const [rows, setRows] = useState([]);
    useEffect(() => {
        console.log("ent useeffect")
        const fetchData = async () => {
          const result = await axios(
            window.location.origin + "/api/MESampleData",
          );
          console.log("before if")
          if(result){console.log(result)}
          console.log("before setrows")
          setRows(result.data);
        };
        fetchData();
      }, []);

return (
        <div className="section">
            {<h6>It should render</h6>}
            <ul>
                {rows.map(row => 
                    <li>{row.item1}</li>
                    )}
            </ul>
</div>)
}

export default LandingPage;

sample output

【问题讨论】:

  • result具体是什么?
  • 您好 - result 是来自 Axios fetch 的响应,result.data 应该是一个记录数组。
  • 我问的是实际情况,而不是预期的情况——例如,显示结果。
  • 如果有帮助,请查看示例输出屏幕打印。
  • 啊,废话。我明白你现在的意思了。我没有抓住正确的数据元素并将其放入 setRows 对象中。我刚刚看到了结果数组,并认为就是这样。让我修复并再次部署。

标签: javascript reactjs axios fetch


【解决方案1】:

尝试将 fetchData 函数拉到 useEffect 之外,但继续在 useEffect 内部调用该函数。

【讨论】:

  • 我之前尝试过,然后又尝试了一次,但没有成功
【解决方案2】:

啊,废话。我明白你现在的意思了。我没有抓住正确的数据元素并将其放入 setRows 对象中。我刚刚看到了结果数组,并认为就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-02
    • 2020-02-22
    • 2021-02-14
    • 1970-01-01
    • 2021-02-11
    • 2020-05-31
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多