【发布时间】:2018-09-18 17:26:25
【问题描述】:
我的Index.tsx 文件中有这段代码,当前显示Actors 的列表。我想通过点击Detail 按钮来显示演员的详细信息,但我的问题是没有显示详细信息视图。有人可以帮忙吗?:
<td>
<button className="action" onClick={(id) => this.handleDetails(item.Id)}>Detail</button>
</td>
调用这个方法:
handleDetails(id: number) {
this.renderPopUp();
}
调用这个方法:
private renderPopUp() {
return <Details id={this.state.activeId} />;
}
并且已经导入了这个:
import * as React from 'react'
import {RouteComponentProps} from 'react-router'
import * as models from "../../models"
import * as Modal from 'react-modal'
import { Details } from './Details'
最后这是我的Details.tsx 文件:
import * as React from 'react'
import { RouteComponentProps } from 'react-router'
import * as models from "../../models"
interface IDetailsState {
actor: models.Actor;
loading: boolean,
}
interface IDetailsProps {
id: number
}
export class Details extends React.Component<IDetailsProps, IDetailsState> {
constructor(props) {
super(props);
this.state = {
actor: null,
loading: true
};
alert('Hi');//This is not showing
fetch('api/actors/get/' + this.props.id)
.then(response => response.json() as Promise<models.Actor>)
.then(data => {
this.setState({
actor: data,
loading: false
});
});
}
public render() {
alert('HelloAgain');
let contents = this.state.loading
? <p><em>Loading...</em>
</p>
: this.renderDetails(this.state.actor);
return <div>
<h1>Actor Details</h1>
{contents}
</div>;
}
private renderDetails(item: models.Actor) {
return <div className='details'>
<label>Id</label>
<div>item.Id</div>
<label>Name</label>
<div>item.Name</div>
<label>Gender</label>
<div>item.Gender</div>
<label>Age</label>
<div>item.Age</div>
<label>Picture</label>
<div>item.Picture</div>
</div>;
}
}
主要问题是return <Details id={this.state.activeId} />; 没有调用Details.tsx,我想知道为什么?我在fetch 上方添加了一个警报alert('Hi');,但它也没有显示。
【问题讨论】:
-
尝试在 componentDidMount 中进行 fetch 调用
-
理想情况下,您不应该在
constructor()中调用setState(),因为组件尚未渲染。但这不应该是这里的主要问题。您是否在 API 调用后获取数据?如果没有尝试将其更改为response => return response.json() as Promise<models.Actor>。否则,您可以在componentDidMount()中获取数据,以使代码更好一点。 -
@Gautam 我的问题是
Details.tsx没有打电话。忘记API调用,我在fetch上方添加了一个警报alert('Hi');,它也没有显示。 -
@AbhayShiro 你能告诉我怎么做吗?
-
@Gautam
Index不能调用Details。不知道为什么?
标签: javascript c# reactjs typescript asp.net-core