javascript - 未定义的值。尝试使用 fetch 设置 ID
问题描述
我可以通过 API 直接访问数据,并且可以让 onClick 显示数据,这样我就知道它触发了。获取失败,因为 Id 未定义但是我无法弄清楚为什么 id 从未定义。
代码:
import React from 'react';
import Film from './Film.js';
class Actor extends React.Component {
state = {
display:false,
data:[],
}
loadFilmDetails = () => {
const url = "http://localhost/c/api/films?actor_id=" + this.props.details.actor_id
fetch(url)
.then( (response) => response.json() )
.then( (data) => {
this.setState({data:data.data})
})
.catch ((err) => {
console.log("something went wrong ", err)
}
);
}
handleActorClick = (e) => {
this.setState({display:!this.state.display})
this.loadFilmDetails()
}
render() {
let films = ""
if (this.state.display) {
films = this.state.data.map( (details, i) => (<Film key={i} details={details} />) )
}
return (
<div>
<h2 onClick={this.handleActorClick}>{this.props.details.first_name} {this.props.details.last_name}</h2>
{films}
</div>
);
}
}
export default Actor;
如果我这样做,console.log(this.prop.details)
我会得到一个包含一些数据但没有 actor_id 的对象。
我如何做到这一点,以便const url = "http://localhost/a/api/films?actor_id=" + this.props.details.actor_id
实际为 actor_id 设置一个值(当前始终未定义)。
解决方案
可能有两个问题:
要么您没有正确地将道具
details.actor_id
从父级传递到Actor
组件。或者 Actor 组件在
props
可用之前已经渲染,这就是您获得undefined
.
如果是第二种情况。然后,您必须在拨打电话之前先使用附加检查fetch
。
尝试此代码更改,一次或分享您的代码和框链接(让我们看看发生了什么)
handleActorClick = (e) => {
this.setState({display:!this.state.display});
this.props.details.actor_id && this.loadFilmDetails();
}
推荐阅读
- python - Matplotlib 在 imshow 图中居中/对齐刻度
- javascript - 如果 ajax 请求的内部值发生变化,如何向元素添加类?
- model-view-controller - 视图必须从哪里接收 mvc 中的数据
- sql-server - 找出同一个学生与不同组中有多少科目相关联
- r - 如何在 tic.R 中添加非失败的 lintr 检查
- pandas - 如何将 3 个数据帧与每个数据帧连接成顺序列
- php - 为什么 require(local_file) 或 include(local_file) 可能会失败以及如何处理?
- c# - 如何在 odata v4 代码生成器中进行动态查询
- javascript - 尝试映射一组 url 图像以使用 map 渲染到卡片
- laravel - 单击提交按钮后,Laravel 表单无法正常工作