gpt4 book ai didi

reactjs - 尝试在 .map 调用期间更改我的数据

转载 作者:行者123 更新时间:2023-12-04 15:07:56 27 4
gpt4 key购买 nike

在一个数据数组的 .map 中,我有另一个数据数组,我也需要在其中做一个 .map。有点像这样

第一次数据加载

async function handleSubmit(event: FormEvent){
event.preventDefault();
await api.get(`people/?search=${input}`).then(response =>{
setCharacters(response.data.results)
})
}

第二次数据加载

   async function getFilmName(film: string) {
const movie = film.split("/");
await api.get(`films/${movie[5]}`).then(response =>{
return(response.data.title)
})
}

然后是 .map 的

 {characters.map(characters =>{
return (
<div>
<Link to={`character/${characters.url.split("/")[5]}`}>{characters.name}</Link>
{characters.films.map((films) =>{
return(
<h5>{getFilmName(films)}</h5>
)
})}
</div>
)
})}

最后我收到一个

Error: Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead.

最佳答案

getFilmName 是 Promise 对象。所以它无法在 JSX 上下文中获取文件名。所以你需要在 useEffect 或其他事件处理程序中使用它,你需要在 state 中保存数据。您可以使用正确的数据进行渲染。

在这种情况下,您可以制作一些新组件,例如,

function FileName ({file}){
const [fileName,setFileName] = useState("")
const getFileName = useCallback(async ()=> {...},[file])
useEffect(()=>{
getFileName()
},[getFileName])
return (<h5>{fileName}</h5>)
}

关于reactjs - 尝试在 .map 调用期间更改我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65746585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com