React native 如何在react native中将新参数传递到上一屏幕?

React native 如何在react native中将新参数传递到上一屏幕?,react-native,react-native-navigation,React Native,React Native Navigation,当用户点击时,我有一个电影的平面列表,它将参数传递到电影详细信息屏幕,然后显示电影详细信息,当用户选择其中任何一个时,屏幕上有一个类似电影的平面列表,基本上新的参数应该传递到电影详细信息屏幕,但不是,它只是像我点击后退按钮一样工作 onPress={() => this.props.navigation.navigate('MovieDetails', { selectedItem: item, })

当用户点击时,我有一个电影的平面列表,它将参数传递到电影详细信息屏幕,然后显示电影详细信息,当用户选择其中任何一个时,屏幕上有一个类似电影的平面列表,基本上新的参数应该传递到电影详细信息屏幕,但不是,它只是像我点击后退按钮一样工作

onPress={() =>
              this.props.navigation.navigate('MovieDetails', {
                selectedItem: item,
              })
            }   // Passing params to movie details screen


console.log(this.props.navigation.getParam('selectedItem')) //receiving params in movie details screen

检查下面的示例。希望这对你有帮助

import * as React from 'react';
import { Button, View, Text } from 'react-native';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';

class HomeScreen extends React.Component {
  render() {
    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text style={{ fontSize: 20, marginBottom: 10 }}>Home Screen</Text>
        <Button
          title="Go to Details"
          onPress={() =>
            this.props.navigation.navigate('Details', {
              name: 'this params from homescreen',
            })
          }
        />
      </View>
    );
  }
}

class DetailsScreen extends React.Component {
  render() {
    console.log('screen', this.props.navigation.state);

    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text style={{ fontSize: 20, marginBottom: 10 }}>
          {this.props.navigation.state.params.name}
        </Text>
        <Button
          title="Go back"
          onPress={() => this.props.navigation.goBack()}
        />
      </View>
    );
  }
}

const RootStack = createStackNavigator({
  Home: HomeScreen,
  Details: DetailsScreen,
});

export default createAppContainer(RootStack);


import*as React from'React';
从“react native”导入{按钮、视图、文本};
从“react navigation”导入{createAppContainer};
从“反应导航堆栈”导入{createStackNavigator};
类主屏幕扩展了React.Component{
render(){
返回(
主屏幕
this.props.navigation.navigate('Details'{
名称:“此参数来自主屏幕”,
})
}
/>
);
}
}
类DetailsScreen扩展了React.Component{
render(){
console.log('screen',this.props.navigation.state);
返回(
{this.props.navigation.state.params.name}
this.props.navigation.goBack()}
/>
);
}
}
const RootStack=createStackNavigator({
主页:主屏幕,
详情:详情屏幕,
});
导出默认createAppContainer(根堆栈);

请放心。

我注意到,当我显式刷新代码时,会显示新的参数,我不知道为什么。。如果可能,您可以共享详细的屏幕源代码
constructor(props){super(props);this.state={tmdbmovieinfo:[],isLoading:false,}}componentDidMount(){this.moviefetch(this.props.navigation.getParam('selectedItem').id)}moviefetch=(id)=>{fetch('id')https://api.themoviedb.org/3/movie/“+id+”?api_key=xxx&language=en-US')。然后((response)=>response.json())。然后((responseJson)=>{this.setState({tmdbmovieinfo:responseJson,isLoading:false})}
如果要在类似电影的详细信息屏幕中再次获取数据,则必须使用componentDidUpdate(),componentDidMount将只执行一次,当安装React组件时,它不会在状态或道具更改时执行。或者,您可以使用onPress获取详细的老化数据