在Javascript ES6中,您可以像这样构造数组:
const [a,b,...rest] = someArray;
Run Code Online (Sandbox Code Playgroud)
其中a是该阵列中的第一个元素,b是第二个,rest是与剩余的元件的阵列.
我知道在C#7中你可以在赋值时解构元组,但是找不到任何与解构数组/枚举相关的东西:
var (a,b) = someTuple;
Run Code Online (Sandbox Code Playgroud)
我有一个IEnumerable我需要第一个和第二个元素作为变量的地方,我需要其余的元素作为另一个IEnumerable.我有一个解决方案,但觉得解构会看起来更干净.
我觉得我这样做是正确的,但我不确定.我异步地将对象加载到ViewModel中的ReactiveList中.通过Xamarin Forms,我将List绑定到Xamarin Forms中ListView的ItemSource属性.我还有一个搜索框,它将清除ReactiveList并将新项添加到ReactiveList.
第一次打开View时,没有任何交互使列表加载,并且禁用了一个绑定到ReactiveCommand以将更多项加载到ReactiveList的按钮.
第二次打开View时,ListView几乎可以立即呈现新ViewModel中的项目,但同样,交互似乎不起作用.但是,更改搜索框实际上会清除ListView中的项目,但不会添加项目.
此行为是在iOS上.我是ReactiveUI 6.3.1和Xamarin Forms 1.3.2.6316.
这是简化的问题:
public class MyViewModel : ReactiveObject, IRoutableViewModel
{
public MyViewModel(IScreen hostScreen = null)
{
HostScreen = hostScreen ?? Locator.Current.GetService<IScreen>();
List = new ReactiveList<ItemViewModel>()
{
ChangeTrackingEnabled = true
};
//This never gets shown
List.Add(new ItemViewModel()
{
Name = "TEST"
});
//Tried doing this on the main thread: same behavior
LoadItemsCommand = ReactiveCommand.CreateAsyncTask(_ => GetItems()), RxApp.TaskpoolScheduler);
LoadItemsCommand
.ObserveOn(RxApp.MainThreadScheduler)
.Subscribe(results =>
{
//debugger breaks here in EVERY case and successfully changes List but doesn't …Run Code Online (Sandbox Code Playgroud) 文档并没有特别清楚该key属性在v-for. 我猜它们在 a 的特定实例中应该是唯一的v-for,并且您可能必须将v-for具有相同键的元素分开。
https://vuejs.org/v2/guide/list.html#key
如果我的页面上有一个具有 v-for 的两个实例的组件,它们是否都具有具有相同键的元素?