Фундаментальное различие между полем и локальной переменной состоит в том, что локальная переменная скопирована , когда JVM создает экземпляр лямбда. С другой стороны, поля могут быть изменены свободно, потому что изменения к ним распространяются также на экземпляр внешнего класса (их область - это весь внешний класс, как показано Борисом ниже).
Самый простой способ мышления об анонимных классах, замыканиях и labmdas - это перспектива scope scope ; представьте, что конструктор копирования добавлен для всех локальных переменных, которые вы передаете в закрытие.
Учебное пособие, которому вы следовали, может быть устаревшим и, вероятно, использует версию 2.x React-navigation.
Они изменили способ открытия ящика:
this.props.navigation.openDrawer()
В этой части документа вы можете найти то, что вы хотите.