为什么需要this.props.componentId
?
它的目的是什么?
为什么在没有该ID的情况下不能使用该库?
react-navigation
不需要这样的东西,而react-native-navigation
v1也不需要这样的东西。那么为什么v2需要并使用它?我问的原因是首先要了解它,其次要看看是否可以跳过此步骤,因为现在我无法从传奇中使用RNN v2。
答案 0 :(得分:0)
这是react-native-navigation
库blogpost的developer给出的详细答案。
因此,我们现在要启用以下行为:用户单击文本后,应用程序将推动
ViewPost
屏幕。稍后,将相同的功能附加到列表项而不是文本将非常容易。要将新屏幕推送到该屏幕的导航堆栈中,我们将使用Navigation.push
。 在新的API中,该方法希望接收当前的propsId。可以在props.componentID中找到。因此,在PostsList.js
中,我们创建了一个pushViewPostScreen
函数,并将其附加到Text的onPress事件上。
import React, {PureComponent} from 'react';
import {View, Text} from 'react-native-ui-lib';
import PropTypes from 'prop-types';
import {Navigation} from 'react-native-navigation';
class PostsList extends PureComponent {
static propTypes = {
navigator: PropTypes.object,
componentId: PropTypes.string
};
constructor(props) {
super(props);
this.pushViewPostScreen = this.pushViewPostScreen.bind(this);
}
pushViewPostScreen() {
// We pass the componentId to Navigation.push
// to reference the which component will be pushed
// to the navigation stack
Navigation.push(this.props.componentId, {
component: {
name: 'blog.ViewPost',
passProps: {
text: 'Some props that we are passing'
},
options: {
topBar: {
title: {
text: 'Post1'
}
}
}
}
});
}
render() {
return (
<View flex center bg-blue60>
<Text onPress={this.pushViewPostScreen}>Posts List Screen</Text>
</View>
);
}
}
export default PostsList;
在official docs中,似乎可以通过Navigation
模块访问负责推,弹出和更改导航的Screen API,该模块始终期望props.componentId
得到对组件的引用。