基本コンポーネントに定義されているいくつかのデータをベースコンポーネントから別のコンポーネントにプッシュしようとしていますが、history.push
でパラメータとして送信されます。this.props.history.pushを介して渡されたデータは、ターゲットページ内で奇妙な振る舞いをしています
Base Component
class BaseComponent extends React.Component
{
gotoTargetPage()
{
const params = { data: {fname: 'john', lname: 'doe' } };
this.props.history.push('/target-page', params);
}
render()
{
return(<button onClick={event => this.gotoTargetPage()}>Go!</button>)
}
}
export default withRouter(BaseComponent);
TargetPage Component:
class TargetComponent extends React.Component
{
componentDidMount()
{
console.log(this.props.history.location.state.data);
}
render()
{
return(<div>Hi! I am {this.props.history.location.state.data.fname}.</div>)
}
}
私は基本コンポーネントのボタンをクリックすると、それが正常にターゲットページをロードします。しかし、コンソールログthis.props.history.state
をundefined
とし、パラメータを使用せずにデータをレンダリングします(使用できないため)。
ここはひねりです。ページを更新すると、表示されているデータを見ることができ、コンソールはデータを正しく記録します。リフレッシュするだけでなく、最初のステップの後に戻るボタンを押すと、データが表示され、コンソールにデータが記録されます。また、これは時間の約75%が発生し、4回に1回の試行では問題なく発生します。
新しいコンポーネントを作成するのと同じ状況を繰り返しましたが、同じ結果が得られました。これの理由は何でしょうか?
Environment:
"react": "^15.5.4",
"react-router": "^4.1.1"
大変申し訳ございません。質問を再現しようとしている間、私は誤って中括弧を間違って配置しました。私はこれらのオプションの両方を試しましたが、まったく同じ結果でした。 – anonym
は、「」でレンダリングされたTargetComponentですか? –
Tony
はい。同様に: '<正確な経路= 'target-page'コンポーネント= {TargetComponent} />' – anonym