Глубокая ссылка на уже открытый экран с разными параметрами. Является ли это возможным? - PullRequest
1 голос
/ 04 ноября 2019

Я работаю над приложением, у которого есть экран категории, где отображаются соответствующие сообщения категории. Я использую реагирующую навигацию для навигации между экранами и обработки глубоких ссылок. Доступ к экрану категории можно получить из приложения или по ссылке. Чтобы получить доступ к экрану категории через глубокую ссылку, я использую что-то вроде myapp://category/:id.

Если приложение уже открыто и сфокусировано на экране категории, глубокая ссылка ничего не делает.

Iв настоящее время "исправили" его, используя метод жизненного цикла componentDidUpdate для сравнения идентификатора, сохраненного в состоянии, и идентификатора в navigation.getParam.

componentDidUpdate = () => {
  const { navigation } = this.props;
  const { categoryID } = this.state;
  const paramID = navigation.getParam('id', null);

  if (paramID !== categoryID) {
    this.setState({ categoryID: paramID }, () => {
      // fetch data
    });
  }
}

Однако мне кажется, что это грязное исправление. Есть ли лучший способ сделать это? Может быть, открывая все глубокие ссылки, используя push вместо навигации через реагировать на навигацию?

1 Ответ

0 голосов
/ 05 ноября 2019

Если вы хотите обновить значения для текущей страницы с текущей страницы, вы можете:

navigation.push (routeName, params, action);

// categoryScreen.js
this.state={
   categoryID : this.props.navigation.state.params.id
}
this.props.navigation.push("category",{id: "john"})
...