Доступ к геттеру из параметризованного геттера

Я создал параметризованный геттер в своем магазине Pinia, и внутри него я хотел бы получить доступ к другому геттеру того же магазина:

      getters: {
  // plain getter, just using the state
  sum: (state) => state.a + state.b,

  // parameterized getter, using the parameter & another getter
  multiSum: (state) => (count) => this.sum * count
}

Это не удается, потому что thisявляется undefinedв контексте вложенной стрелочной функции (при вызове this.sum). Я могу обойти это, захватив экземпляр магазина:

      multiSum(state) {
  const store = this
  return (count) => this.sum * store.count
}

Это работает, но довольно многословно. Есть ли другой способ получить доступ к другим геттерам из такой вложенной стрелочной функции?

1 ответ

может быть undefinedвнутри функции стрелки, потому что она не взаимозаменяема с обычной функцией и получает контекст из родительской области.

Использование и подробно описано в документации . Либо, либо можно использовать, но у него лучше Typescript и, следовательно, поддержка IDE.

В первом фрагменте stateуже доступен в области функций, нет необходимости в доступе:

      multiSum: (state) => (count) => state.sum * count

Во втором фрагменте const store = thisне нужен, потому что магазин уже this.

      multiSum() {
  return (count) => this.sum * count
}
Другие вопросы по тегам