我的TranslationDetail組件在打開時傳遞一個id,並且基於此,在類構造函數中觸發外部api調用,將數據接收到狀態,並將此數據顯示在TranslationDetail上。React - 在道具變化上調用函數
//Routing:
<Route path="/translation/:id" component={TranslationDetail}/>
//Class:
class TranslationDetail extends Component {
constructor(props){
super(props);
this.props.fetchTrans(this.props.params.id);
}
這一切工作正常,如果我手動輸入網址。如果我想使用反應路由器,例如爲了顯示下面的項目,url不會改變,但api調用不會被觸發,並且數據將保持不變。
<button
type="button"
onClick={() =>
browserHistory.push(`/translation/${Number(this.props.params.id)+1}`)}>
Next
</button>
請注意,我是一個初學者。發生這種情況的原因是我相信構造函數只運行一次,因此不會觸發進一步的api調用。
我該如何解決這個問題? 我是否需要列出道具並在變更時調用函數?如果是,如何?
謝謝,使用這些事件它現在正確地工作。 – balu000