Переход на другой экран не вызывает никакой функции

Если вы читаете PEP 263 , он четко говорит:

Чтобы определить кодировку исходного кода, магический комментарий должен быть помещен в исходные файлы либо как первый или вторая строка в файле ...

blockquote>

(Исходное предложение сказало, что оно должно быть первой строкой после # !, если оно есть, но, по-видимому, оказалось, что было проще реализовать с правило «первая или вторая строка».)

Фактические справочные документы описывают одно и то же, менее дружественным, но более строгим способом, для 3.3 и 2.7 .

«Магический комментарий», который появляется позже в файле, не является волшебным, это просто комментарий, который вводит вас в заблуждение, не затрагивая компилятор Python.

UTF-8 для u'哈哈' - '\xe5\x93\x88\xe5\x93\x88', поэтому это байты в файле. В последних версиях Python (включая 2.7 и все 3.x) кодировка по умолчанию всегда ASCII, если файл не начинается с спецификации UTF (как это делают некоторые редакторы Microsoft); даже в 2.3-2.6 это обычно ASCII; в более ранних версиях это латинский-1. Пытаться интерпретировать '\xe5\x93\x88\xe5\x93\x88' не удастся с точным исключением, которое вы видели.

1
задан Emerald 21 February 2019 в 04:13
поделиться

3 ответа

В этом случае вам необходимо прослушать NavigationEvents , потому что компоненты уже смонтированы, но didFocus будет вызываться каждый раз, когда представление получает фокус.

Вот пример кода из документов:

import React from 'react';
import { View } from 'react-native';
import { NavigationEvents } from 'react-navigation';

const MyScreen = () => (
  <View>
    <NavigationEvents
      onWillFocus={payload => console.log('will focus',payload)}
      onDidFocus={payload => console.log('did focus',payload)}
      onWillBlur={payload => console.log('will blur',payload)}
      onDidBlur={payload => console.log('did blur',payload)}
    />
    {/* 
      Your view code
    */}
  </View>
);

export default MyScreen;
0
ответ дан neydroid 21 February 2019 в 04:13
поделиться

Переход назад из стека C в стек B не вызовет componentDidMount (), так как компоненты были уже смонтированы при создании стека B.

, который вы можете сделать, это сбросить стек навигации при переходе из стека B в стек C, как показано ниже.

const stackCAction = StackActions.reset({
    index: 0,
    actions: [NavigationActions.navigate({ routeName: 'StackC' })],
});

диспетчеризация с пометкой

this.props.navigation.dispatch(stackCAction);

, возвращаясь назад, сделать это невозможно.

поочередно вы можете передать функцию обратного вызова из стека B в стек C для обновления.

Проверьте эту ссылку для полного ответа.

0
ответ дан Vinil Prabhu 21 February 2019 в 04:13
поделиться

Это то, что делает стековый навигатор, он хочет снова загрузить весь экран.

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

Например, вы прокрутили наполовину на определенном экране и перешли на другой экран, теперь вы вернулись, и вы увидите, что ваш экран наполовину прокручен там, где вы оставили.

так что ничего не поделаешь, когда ты вернешься.

Примечание: Если экран перемещался в прошлом и существует в текущем стеке, то переход к экрану снова не вызовет никаких методов жизненного цикла.

Итак, для вашего случая,

вы можете передать ссылку на метод в навигационные параметры. и позвоните, прежде чем начать навигацию.

вот так,

скажем, вы находитесь в screenB и хотите вызвать метод methodSuperCool=()=>{...}, который находится в screenA, из которого вы перешли на текущий экран.

для этого вам нужно будет передать ссылку на метод в параметрах при переходе к screenB с экрана A.

this.props.navigation.navigate('screenB',{methodSuperCool:this.methodSuperCool});
//this to be write in screenA

сейчас на экране B, прежде чем вы перейдете к экрану, вызовите это,

 this.props.navigation.state.params.methodSuperCool() // this can also have params if you like to pass
 this.props.navigation.navigate('screenA') // or goBack() method will also work
0
ответ дан Jaydeep Galani 21 February 2019 в 04:13
поделиться
Другие вопросы по тегам:

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