Почему моя реализация React Native Navigation на Android работает так смехотворно медленно? ⇐ Android
-
Anonymous
Почему моя реализация React Native Navigation на Android работает так смехотворно медленно?
Я создаю небольшое приложение-головоломку, похожее на кроссворд, используя Expo/React Native/Typescript.
Вот мой App.tsx:
const Stack = createNativeStackNavigator(); экспортировать функцию по умолчанию App() { возвращаться ( ); } А вот сокращенная версия компонента PuzzleMain:
const PuzzleMain: React.FC = ({ навигация }) => { const [selectedSection, setSelectedSection] = useState(PuzzleSection.Grid) useEffect(() => { Navigation.setOptions({ headerRight: () => ( ), }); }, [навигация, выбранный раздел]); const Grid = ; const ключView = ; return {selectedSection == PuzzleSection.Grid ? сетка: подсказка} ; } const SwitchSectionButton: React.FC = ({ selectedSection, setSelectedSection }) => { вернуть setSelectedSection(selectedSection == PuzzleSection.Grid ? PuzzleSection.Clues: PuzzleSection.Grid) } title={selectedSection} />; } Подводя итог, можно сказать, что есть компонент «сетка» и компоненты «подсказки», а кнопка SwitchSectionButton используется для переключения между ними.
Нажатие этой кнопки занимает, без преувеличения, около 3 полных секунд, чтобы внести изменения на Pixel 5, который я использую для тестирования. Что я здесь делаю не так? Используя Expo, чтобы открыть это в Интернете, это происходит мгновенно, возможно, это специфично для Android?
Что я пробовал:
[*]Запоминание компонентов PuzzleGrid и PuzzleCluesView (const PuzzleGrid: React.FC = memo(({ Puzzle }) .... По сути, это не имело никакого значения. [*]Вместо этого я переключился на использование TabView для перемещения между компонентами — это сработало! Но честно говоря, я бы предпочел иметь и то, и другое, и кнопка работала одинаково медленно, когда я включил ее в реализацию TabView. [*]Использование StackNavigator вместо NativeStackNavigator — это не имело никакого значения. [*]Использование npx expo start --no-dev, просто создание apk и установка — это ускорило процесс, но, вероятно, все равно заняло целую секунду или две, что слишком медленно. >
Я создаю небольшое приложение-головоломку, похожее на кроссворд, используя Expo/React Native/Typescript.
Вот мой App.tsx:
const Stack = createNativeStackNavigator(); экспортировать функцию по умолчанию App() { возвращаться ( ); } А вот сокращенная версия компонента PuzzleMain:
const PuzzleMain: React.FC = ({ навигация }) => { const [selectedSection, setSelectedSection] = useState(PuzzleSection.Grid) useEffect(() => { Navigation.setOptions({ headerRight: () => ( ), }); }, [навигация, выбранный раздел]); const Grid = ; const ключView = ; return {selectedSection == PuzzleSection.Grid ? сетка: подсказка} ; } const SwitchSectionButton: React.FC = ({ selectedSection, setSelectedSection }) => { вернуть setSelectedSection(selectedSection == PuzzleSection.Grid ? PuzzleSection.Clues: PuzzleSection.Grid) } title={selectedSection} />; } Подводя итог, можно сказать, что есть компонент «сетка» и компоненты «подсказки», а кнопка SwitchSectionButton используется для переключения между ними.
Нажатие этой кнопки занимает, без преувеличения, около 3 полных секунд, чтобы внести изменения на Pixel 5, который я использую для тестирования. Что я здесь делаю не так? Используя Expo, чтобы открыть это в Интернете, это происходит мгновенно, возможно, это специфично для Android?
Что я пробовал:
[*]Запоминание компонентов PuzzleGrid и PuzzleCluesView (const PuzzleGrid: React.FC = memo(({ Puzzle }) .... По сути, это не имело никакого значения. [*]Вместо этого я переключился на использование TabView для перемещения между компонентами — это сработало! Но честно говоря, я бы предпочел иметь и то, и другое, и кнопка работала одинаково медленно, когда я включил ее в реализацию TabView. [*]Использование StackNavigator вместо NativeStackNavigator — это не имело никакого значения. [*]Использование npx expo start --no-dev, просто создание apk и установка — это ускорило процесс, но, вероятно, все равно заняло целую секунду или две, что слишком медленно. >
Мобильная версия