Mobx,过滤并取消移动@computed中的数组

Mobx, filter and unshift an array in @computed

给定一个包含 id-name-propertyName 集合的可观察数组,我试图过滤掉一个必须绑定到 React 组件中的 html select 控件的国家/地区数组。我需要在我的 select html 元素中提供一个空的默认值。 'Country' 的过滤器效果很好,但是当添加 .unshift(empty) 部分时,我 运行 遇到了问题。

我的观察:

class ReferenceStore {
  @observable referenceData=[];

到目前为止我的@computed:

  @computed get countries() {
    var empty = { id: 0, name: '' };
    var test = this.referenceData.filter(x => x.propertyName === "Country").unshift(empty);
    return test; 
  }

问题是此代码导致我的组件出现以下错误消息:

ReferenceStore__.a.countries.map is not a function 

我该怎么办?谢谢!

unshift returns 数组的新长度,而不是数组本身。

您可以先 unshift,然后 return 数组。

@computed get countries() {
  var empty = { id: 0, name: '' };
  var test = this.referenceData.filter(x => x.propertyName === "Country");

  test.unshift(empty);

  return test; 
}