GWT の History メカニズムで見つけた例については、少し当惑しています。
GWT Historyの例を見て実行すると、あまり良くないようです。
歴史は、多くの場合、アプリケーションの変更に起因するものとして説明されます。
この例には複数の問題があります。
初期状態も空のトークンとトークン「page0」です
--> 「履歴」戻ると「アプリを離れる」前に同じページが 2 回表示される
履歴と状態は何らかの形で間接的に同期されます。
- タブを選択すると選択イベントが発生し、新しいトークンが設定されます。トークンを設定すると履歴値が変更され、同じタブが再度選択されます (?)。そのパターンは一種のマインドツイストです。
問題を別の視点から見るのはそんなに間違っているでしょうか?
履歴トークンに従って常に状態を変更する方がはるかにクリーンだと思います。
その場合ValueChange
、「状態レンダリング」を実装します。状態を変更したいボタンは、メソッドを使用して直接ではなく、History.newItem()
メソッドを使用して間接的に状態を変更しvalueChange
ます。
例えば
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if(token.isEmpty()){
show("welcome");
}else if(token.equals("registration")){
show(token);
}
}
そして、登録を表示したいボタン:
welcome = new Button("Registration", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
History.newItem("registration");
}
});
これはどういうわけか履歴を使用してアプリケーションの状態を駆動しています。
それの何が問題なのですか、なぜどこでも逆に行われているのですか?