簡體   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