代码之家  ›  专栏  ›  技术社区  ›  Rod

为什么我的“取消”操作也会进入“保存”操作?

  •  0
  • Rod  · 技术社区  · 2 年前

    当我点击Cancel时,流进入我的Cancel方法,但之后进入我的Save操作?嗯?为什么?(仅供参考:这是父组件的子组件)

    <h3>EditPage</h3>
    @inject AppState _appState
    @inject IJSRuntime _jsRuntime
    
    <div class="container">
    
        <EditForm Model="@_model" OnValidSubmit="@Save">
            <div class="row">
                <div class="col">
                    <button type="submit" class="btn btn-primary">Save</button>
                    <button @onclick="CancelEdit" class="ms-3 btn btn-secondary">Cancel</button>
                    <button @onclick="()=>Delete(new MyClass())" class="ms-3 btn btn-danger">Delete</button>
                </div>
            </div>
        </EditForm>
    </div>
    
    @code {
        [Parameter] public EventCallback<string> OnClick { get; set; }
    
        MyClass? _model;
    
        async Task Delete(MyClass item)
        {
            if (!await _jsRuntime.InvokeAsync<bool>("confirm", $"Are you sure you want to delete item?"))
                return;
    
            //do delete
            _appState.IsEdit = false;
            _appState.EditingId = "";
        }
    
        protected override void OnInitialized()
        {
            _model = new();
        }
    
        void CancelEdit()
        {
            _appState.IsEdit = false;
            _appState.EditingId = "";
    
            OnClick.InvokeAsync("Cancel action occurred");
        }
    
        void Save()
        {
            //persist work Add or Update
    
            _appState.IsEdit = false;
            _appState.EditingId = "";
    
            OnClick.InvokeAsync("Save occurred");
        }
    }
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   Mister Magoo    2 年前

    这是因为 button 以某种形式 submits 默认情况下,表单的提交操作为 Save

    <button type='button'> 应该停止这种行为。