深度链接到具有不同参数的已打开的屏幕。有可能吗?

问题描述 投票:1回答:1

我正在使用一个具有类别屏幕的应用程序,其中显示了该类别的相关帖子。我正在使用react-navigation在屏幕之间导航并处理深层链接。类别屏幕可以在应用程序内或通过深层链接访问。要通过深层链接访问类别屏幕,我正在使用myapp://category/:id之类的东西。

如果该应用程序已经打开并且专注于类别屏幕,则深层链接将不执行任何操作。

我目前已使用componentDidUpdate生命周期方法“修复”了它,以比较状态中存储的ID和navigation.getParam中的ID。

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而不是通过react-navigation导航来打开所有深层链接?

react-native react-navigation deep-linking
1个回答
0
投票

如果要从当前页面更新当前页面的值,则可以:

navigation.push(routeName,params,action);

// categoryScreen.js
this.state={
   categoryID : this.props.navigation.state.params.id
}
this.props.navigation.push("category",{id: "john"})
© www.soinside.com 2019 - 2024. All rights reserved.