Когда не следует использовать React memo?

new String("text"); явно создает новый и ссылочно выделенный экземпляр объекта String; String s = "text"; может повторно использовать экземпляр из пула строковых констант, если он доступен.

Вы очень редко хотели бы использовать конструктор new String(anotherString). Из API:

String(String original) : Инициализирует вновь созданный объект String, чтобы он представлял ту же последовательность символов, что и Аргумент; Другими словами, вновь созданная строка является копией строки аргумента. Если явная копия оригинала не нужна, использование этого конструктора необязательно, поскольку строки неизменяемы.

blockquote>

Связанные вопросы


Что означает референциальное различие

Изучите следующий фрагмент:

    String s1 = "foobar";
    String s2 = "foobar";

    System.out.println(s1 == s2);      // true

    s2 = new String("foobar");
    System.out.println(s1 == s2);      // false
    System.out.println(s1.equals(s2)); // true

== по двум ссылкам типы - это сравнение ссылочной идентичности. Два объекта equals не обязательно ==. Обычно неверно использовать == для ссылочных типов; большую часть времени equals нужно использовать вместо этого.

Тем не менее, если по какой-то причине вам нужно создать две строки equals, но не ==, вы можете используйте конструктор new String(anotherString). Однако необходимо повторить, что это очень своеобразно и редко является намерением.

Ссылки

Связанные с этим вопросы

25
задан vsync 26 March 2019 в 16:28
поделиться

1 ответ

Идея состоит в том, чтобы избегать использования memoization для данных, которые имеют возможность изменения очень часто. Как указано в блоге, это также включает обратные вызовы, который зависит от таких типов данных. Например, функционирует такой как

<Foo onClick={() => handle(visitCount)}/>

, я действительно наслаждался этим упрощенным чтением. Примеры являются яркими. https://dmitripavlutin.com/use-react-memo-wisely /

0
ответ дан 28 November 2019 в 17:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: