2017-01-20 1 views
1

ここでは、私はどこかで絶対に移動する傾向があります:browserHistory.push()はアンチパターンですか?

リソースのページにリソースを削除するボタンがあります。私は別の場所を移動したいのリソースが削除された後にのみ、削除が失敗した場合、移動したくない。これには、「電話をかける、完了するまで待つ、何が起こったか確認する、それに応じてナビゲートする」と言う能力が必要です。

これはコードの匂いのようです。それは、反応ルータの宣言的なアプローチでは気にしません。私が間違っている?

これを行うには、より慣用的な方法があります:

// this.props.resource from container 
<Link onClick={_ => { 
    deleteResource(this.props.resource).then(result => { 
    if (!result) // don't navigate, dispatch an action 
    else browserHistory.push("different/place/entirely") // <= totally imperative 
}/> 

答えて

1

ルーティングは必ずしも不可欠と思われるので、私はあなたがそれを回避することができますかわかりません。

私は自分のコードベースで慣れているものだけをopineすることができますが、Link(たいていの場合)より便利であればどこでもbrowserHistory.pushを使用します。

それは私がLinkとコンサートで/ browserHistory.pushを使用するのは特有だと思います。ルーティングに関連する理由がない場合は、汎用コンポーネントを使用する必要があります。

最後に:it is an anti-pattern to use arrow-functions in component JSX Props

+0

()=> {}宣言は任意のコールバック位置 の反パターンですが、スタックコードブロックにうまく収まります;)ありがとう –

関連する問題