Переменная экземпляра React undefined - PullRequest
0 голосов
/ 16 июня 2020

У меня есть базовый компонент, в котором я хочу иметь переменную уровня экземпляра, обновляемую подклассами. Единственный способ получить эту работу - добавить ее в состояние, чего я не хочу делать из-за того, что значение этой переменной НЕ связано с пользовательским интерфейсом, поэтому я не хочу запускать повторный рендеринг. .

Итак, возьмем следующий компонент:

class BaseComponent extends React.Component {
  constructor(props) {
    super(props);
    this.params = [];
  }

  addParam(name) {
    this.params.push(name);
  }

  getUrl() {//this.params is always undefined
    return format("{0}?", this.constructor.name, this.params.join("&");
  }
}

Итак, this.params всегда не определен, что имеет смысл, поскольку он не является частью состояния. Эта переменная связана с URL-адресом, а не с пользовательским интерфейсом, поэтому, когда значение обновляется, я не хочу запускать повторный рендеринг путем обновления состояния.

Не уверен, какой здесь лучший подход?

Варианты, о которых я знаю:

1) Добавить в состояние, которое вызовет повторный рендеринг

2) Вызов forceUpdate (), который также вызовет повторный рендеринг

Мне не нравится ни один из этих вариантов, поэтому я надеюсь, что кто-то знает, как правильно делать то, что я пытаюсь сделать.

...