繁体   English   中英

如何基于 AJAX 渲染导致反应 js?

[英]How to render based on AJAX result in react js?

只想根据来自 ajax 调用的结果渲染电影卡。

目前,电影卡组件是基于名为 list 的硬代码数组呈现的。 我只想让它动态化并用我的 ajax 数据替换它。

const getlist = async () => {
  const res = await fetch('http://localhost:3001/customize');
  const data = await response.json();
  getlist();
};

export default function Index() {

  const list = ['dexter', 'bb', 'got'];

  return (
    <>
      <main className={parentstyle.main_container}>
        <NavBar />
        <div className={style.searchbar_container}>
          <SearchBar />
        </div>
        <div className={style.card_container}>
          {test.map((element, i) => {
            return <MovieCard movieName={element} key={i} />;
          })}
        </div>
      </main>
    </>
  );
}

使用useState挂钩设置您的组件 state(列表)并在useEffect挂钩中获取数据...

Effect Hook 允许您在 function 组件中执行副作用:

在 React 组件中获取数据、设置订阅以及手动更改 DOM 都是副作用的示例。 无论您是否习惯将这些操作称为“副作用”(或仅称为“效果”),您之前都可能在组件中执行过它们。

import { useEffect, useState } from "react"

const getlist = async () => {
  const res = await fetch("http://localhost:3001/customize")
  if (!res.ok) {
    throw new Error(`${res.status}: ${await res.text()}`)
  }
  return res.json()
}

const Index = () => {

  const [ list, setList ] = useState([]) // start with an empty array

  useEffect(() => {
    getList()
      .then(setList)
      .catch(console.error)
  }, []) // empty dependencies array, this runs only once

  return (
    // ...

    {list.map((element, i) => (
      <MovieCard movieName={element} key={i} />
    ))}

    // ...
  )
}

export default Index

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM