所以,我有一个简单的按钮(TouchableHighlight)调用以下函数:
showMovie() {
this.props.navigator.push({
name: 'MovieScreen',
index: 1,
movie: "terminator"
});
}

按预期工作,推送在不同文件中定义的MovieScreen场景。
在MovieScreen构造函数中,我有:
constructor(props) {
super(props);
console.log(this.props.movie);
}

我得到的只是"未定义"。
我尝试过:console.log(this.props.passProps.movie); =>未定义。
我试过把#34;电影" passProps对象中的参数=>未定义。
我似乎无法将参数传递给场景。如果我打印this.props我无法找到"电影"变量,但this.props在那里,它包含导航器对象和所有内容。
从网络上的例子来看,我做了成千上万的人所做的事情,区别在于我的工作没有。
我做错了什么?
按要求提供更多详情
这就是我的应用程序的组成方式:
index.android.js
class MovieApp extends Component {
render() {
return (
<Navigator
initialRoute={{ name: 'HomepageScreen', title: 'My Initial Scene', index: 0 }}
renderScene={ this.renderScene }
/>
);
}
renderScene(route, navigator) {
if (route.name == 'HomepageScreen') {
return <HomepageScreen navigator={navigator} />
}
if (route.name == 'MovieScreen') {
return <MovieScreen navigator={navigator} />
}
}
}
&#13;
HomepageScreen.js
export default class HomepageScreen extends Component {
constructor(props) {
super(props);
var navigator = this.props.navigator;
render() {
return(
<TouchableNativeFeedback onPress={this.showMovie.bind(this)}>
<View style={Style.movieButton}>
<Text style={Style.textStyle1}>Asd</Text>
</View>
</TouchableNativeFeedback>
);
}
showMovie() {
this.props.navigator.push({
name: 'MovieScreen',
index: 1,
movie: "terminator"
});
}
}
&#13;
MovieScreen.js
export default class MovieScreen extends Component {
constructor(props) {
super(props);
console.log(this.props.movie);
}
.....
&#13;
答案 0 :(得分:2)
试试这个:
renderScene(route, navigator) {
if (route.name == 'HomepageScreen') {
return <HomepageScreen navigator={navigator} {...route.passProps} />
}
if (route.name == 'MovieScreen') {
return <MovieScreen navigator={navigator} {...route.passProps} />
}
}
传递这样的道具:
this.props.navigator.push({
name: 'MovieScreen',
index: 1,
passProps: {
movie: "terminator"
}
});