Как передать данные обратно на предыдущий экран в реагировать родной навигации v5? - PullRequest
0 голосов
/ 02 марта 2020

Я только что обновился, чтобы отреагировать на встроенную навигационную версию 5. Теперь я пытаюсь отправить данные обратно на предыдущий экран при вызове goBack ().

I pu sh следующий просмотр с

const onSelectCountry = item => {
    console.log(item);
};

navigation.navigate('SelectionScreen', {
        onSelect: onSelectCountry});

И возвращаясь после выбора элемента из FlatList с вызовом:

function onSelectedItem(item) {
    route.params.onSelect(item);
    navigation.goBack();
}

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

Может кто-нибудь сказать, пожалуйста, правильный способ сделать это.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

здесь есть реализация

scereen A

const Screen1 = ({navigation, route}) => {
  const [item, setItem] = useState(null);

  useEffect(() => {
    navigation.addListener('focus', () => {
      console.log(route.params)
    })
  }, [])  

  const onPress = () => {
    navigation.navigate('Screen2', {onReturn: (item) => {
      setItem(item)
    }})
  }
  return (
    // Components
  )
}

Screen2:

const Screen2 = ({navigation, route}) => {

  useEffect(() => {
    navigation.addListener('focus', () => {
      console.log(route.params)
    })
  }, [])  

  // back Press
  const onPress = () => {
    route.params.onReturn(item);
    navigation.goBack()
  }

  return (
    // Components
  )
}
1 голос
/ 03 марта 2020

навигация отправляет данные на экраны.

onPress={() => {
          // Pass params back to home screen
          navigation.navigate('Home', { post: postText });

следуйте официальной документации React Native

...