繁体   English   中英

GWT历史记录-状态创建历史记录还是历史记录结果处于状态?

[英]GWT History - Does state create History or History results in state?

我为GWT的历史记录机制示例感到困惑。

查看并运行示例GWT历史记录似乎不太好。

历史通常被解释为应用程序中的更改所导致的结果。

该示例存在多个问题:

  • 初始状态还包括空令牌和令牌“ page0”

    ->在“离开应用程序”之前,“历史记录”返回两次显示同一页面

  • 历史和状态以某种方式间接地同步。

    • 制表符选择将导致选择事件,该事件将设置新令牌。 设置令牌会导致“历史记录值更改”,然后再次选择相同的选项卡(?)。 这种模式令人不安。

从另一个角度看问题会错吗?

我认为始终根据历史记录令牌更改状态会更清洁。

在这种情况下, ValueChange将实现“状态呈现”。 想要更改状态的Button不会直接执行此操作,而是使用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");                
        }
    });

这是以某种方式使用历史记录来驱动应用程序状态。

这有什么问题,为什么到处都相反呢?

GWT历史记录确实提供了一种设置令牌的方法, 而不会导致将更改历史记录的方法称为 History.newItem("registration", false);

至于仅针对GWT历史记录的建议,ValueChange将实现“状态呈现”,在您需要传递多个String来设置状态的情况下,该方法将无效。 在这种情况下,我如上所述设置令牌,然后使用MVC将需要的任何数据转发到视图以进行渲染。

无论如何,我绝对不会通过onValueChange来选择一个选项卡。 我使用的是类似tabPanel.selectTab(tabNum);类的东西tabPanel.selectTab(tabNum);

FWIW,GWT思维的当前状态已从历史变为使用活动和场所

您可能希望看到它也许更好地与您要尝试的内容保持一致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM