Skip to content

Select 组件是否要重复触发 OnSelectedItemChanged 讨论 #7409

@water1983

Description

@water1983

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

<Select IsPopover="true" IsDisabled="sSelectIsDisabled"
        TValue="string" Items="sSelectItems"
        @bind-Value="sSelectedValue"
        OnSelectedItemChanged="sSelect_OnSelectedItemChanged" Color="Color.Dark" />

在后台代码中

sSelectedItems=[];
sSelectedItems.Add(new SelectedItem
                            {
                                Text = "T1",
                                Value = "T1"
                            });

sSelectedValue=null;//不触发OnSelectedItemChanged
sSelectItems.Clean();
sSelectedItems.Add(new SelectedItem
                            {
                                Text = "T1",
                                Value = "T1"//如果这里跟上面的不一样,则sSelectedValue = sSelectedItems.First();会触发
                            });
sSelectItems.Add..一组新的,但第一个选项的文本值,和置为null之前的一样.

sSelectedValue = sSelectedItems.First();//不触发OnSelectedItemChanged
(如果第一个选项的文本值,和置为null之前的不一样,会触发OnSelectedItemChanged)

我看Select的代码判定是否触发OnSelectedItemChanged有个内部变量_lastSelectedValueString
但无论是将Value置为null还是清空Items的时候都不会改变这个_lastSelectedValueString,值依然维持在第一次选择后

Expected Behavior

Value置为null时清空上次选择的记忆,或者给个选项能够清空。

Interactive render mode

Interactive Server (Interactive server-side rendering (interactive SSR) using Blazor Server)

Steps To Reproduce

<Select IsPopover="true" IsDisabled="sSelectIsDisabled"
        TValue="string" Items="sSelectItems"
        @bind-Value="sSelectedValue"
        OnSelectedItemChanged="sSelect_OnSelectedItemChanged" Color="Color.Dark" />

在后台代码中

sSelectedItems=[];
sSelectedItems.Add(new SelectedItem
                            {
                                Text = "T1",
                                Value = "T1"
                            });
.......
sSelectedValue=null;//不触发OnSelectedItemChanged
sSelectItems.Clean();
sSelectedItems.Add(new SelectedItem
                            {
                                Text = "T1",
                                Value = "T1"//如果这里跟上面的不一样,则sSelectedValue = sSelectedItems.First();会触发
                            });
sSelectItems.Add.....一组新的,但第一个选项的文本值,和置为null之前的一样.

sSelectedValue = sSelectedItems.First();//不触发OnSelectedItemChanged

(如果第一个选项的文本值,和置为null之前的不一样,会触发OnSelectedItemChanged)

我看Select的代码判定是否触发OnSelectedItemChanged有个内部变量_lastSelectedValueString
但无论是将Value置为null还是清空Items的时候都不会改变这个_lastSelectedValueString,值依然维持在第一次选择后

Exceptions (if any)

No response

.NET Version

NET9.0

Anything else?

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions