【发布时间】:2016-12-24 08:26:08
【问题描述】:
我的 TranslationDetail 组件在打开时会传递一个 id,并基于此在类构造函数中触发外部 api 调用,将数据接收到 state,并将此数据显示在 TranslationDetail 上。
//Routing:
<Route path="/translation/:id" component={TranslationDetail}/>
//Class:
class TranslationDetail extends Component {
constructor(props){
super(props);
this.props.fetchTrans(this.props.params.id);
}
如果我手动输入网址,这一切都很好。如果我想使用 react-router 例如显示下一个项目,如下面的 url 确实发生了变化,但没有触发 api 调用,数据将保持不变。
<button
type="button"
onClick={() =>
browserHistory.push(`/translation/${Number(this.props.params.id)+1}`)}>
Next
</button>
请记住,我完全是初学者。发生这种情况的原因是我相信构造函数只运行一次,因此不会触发进一步的 api 调用。
我该如何解决这个问题? 我是否需要列出道具并在更改时调用函数?如果是,怎么做?
【问题讨论】:
标签: javascript reactjs react-router