1

V1a と V1b というビューの 2 つのインスタンスがあります。これらは同じタイプのインスタンスであるため、プレゼンテーション モデル (PM1) の同じインスタンスがシングルトンとして各インスタンスに注入されるため、どちらも同じインスタンスを使用します。各ビューには異なる状態 (V1a の場合は S1a、V1b の場合は S1b) が表示されますが、これら 2 つのビューを切り替えると (TabNavigator にある場合など)、奇妙な結果が得られます。

  1. ユーザーはV1aを見て、S1aの状態を確認します。
  2. ユーザーは V1b を見て、S1b の状態を確認します。
  3. ユーザーは再びV1aを確認しますが、今回はS1bの状態が表示されます。

これは、S1b が PM1 シングルトンの状態を上書きし、V1a が再度開かれたときにビューに V1b の状態が表示されるためです。私には3つの解決策があります:

  1. シングルトンを注入しないでください! しかし、それが最も一般的な方法のようです。
  2. ユーザーがビューを切り替えると、そのデータが PM1 に再注入されます。これは、最上位レベルに状態があり、それを最下位レベルに注入する必要がある階層ビューでは複雑になる可能性があります。バインディングにはさらに注意が必要です。
  3. ビューで状態を保持し、ビューが動作する必要があるときに PM に渡します。

解決策 3 が最も簡単なようです。ただし、プレゼンテーション モデルについて私が読んだことはすべて、状態がプレゼンテーション モデルに保持されていることを示唆する傾向があります。誰が私が間違っているのか教えてもらえますか? 私が知る限り、プレゼンテーション モデルよりもビューで状態を保持する方がはるかに簡単で安全です。

4

1 に答える 1