我正在使用一个具有类别屏幕的应用程序,其中显示了该类别的相关帖子。我正在使用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导航来打开所有深层链接?
如果要从当前页面更新当前页面的值,则可以:
navigation.push(routeName,params,action);
// categoryScreen.js
this.state={
categoryID : this.props.navigation.state.params.id
}
this.props.navigation.push("category",{id: "john"})