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
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions