Я работаю над приложением, у которого есть экран категории, где отображаются соответствующие сообщения категории. Я использую реагирующую навигацию для навигации между экранами и обработки глубоких ссылок. Доступ к экрану категории можно получить из приложения или по ссылке. Чтобы получить доступ к экрану категории через глубокую ссылку, я использую что-то вроде 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 вместо навигации через реагировать на навигацию?