React Navigation 4.x для React Navigation 5.x - PullRequest
0 голосов
/ 09 июля 2020

Текущая проблема заключается в том, что я хочу использовать параметры навигации для обновления состояния

В руководстве по ссылке выше используется React Navigation 4.x, а я использую React Navigation 5 .x

Учебник:

function onSaveNote() {
    navigation.state.params.addNote({ noteTitle, noteValue })
    navigation.goBack()
  }

MyProject:

function onSaveAuction() {
    
    navigation.navigate('Home', { auctionTitle, auctionValue }
    

  }

Это предупреждение , которое я получал бы всякий раз, когда использовал код для 4.x

Я пробовал использовать второй пункт маркера, который должен использовать вместо него navigate, но он по-прежнему не работает.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Мы не знаем ваших данных, однако вы не должны передавать функции или класс в параметрах навигации.

Чтобы убедиться, что ваши данные не содержат несериализуемых данных, как упоминалось выше, вы можно попробовать сделать JSON.stringify(), а затем JSON.parse на следующем экране, чтобы увидеть, исчезло ли это предупреждение.

Лучшее решение - проверить ваши данные, но если вам нужно передать несериализуемые данные, не стесняйтесь использовать JSON.

Я сделал вам пример:

Параметры передачи:

function onSaveAuction() {
  /* It will remove any functions, class or other non-serializable from params. */
  const data = JSON.stringify({ auctionTitle, auctionValue });

  navigation.navigate('Home', { data });
}

Home. js

function Home({ route, navigation }) {
  /* Get the param, then parse to object */
  const data = JSON.parse(route.params.data);
}
0 голосов
/ 09 июля 2020

В синтаксисе нет ничего плохого (кроме скобки, которую вы забыли закрыть). Ваша проблема в данных, которые вы пытаетесь передать. Предупреждение сообщает вам, что вы пытаетесь передать несериализуемые значения, такие как экземпляры классов, функции и т. Д. c. Так что проверьте еще раз, каковы значения аукционаTitle иuctionValue.

...