【发布时间】:2021-07-06 17:31:40
【问题描述】:
我正在使用 react nativation,并且正在尝试将参数传递到屏幕。但是,当我这样做时,它只在第一次工作,当我尝试使用不同的值访问同一个屏幕时,导航工作但屏幕保留了第一个导航事件的值。例如,当我选择用户John Bolton 时,它会显示该用户的信息。但是,当我返回并选择另一个用户时,它总是显示John Bolton 的信息。
这是我访问屏幕的代码:
goToUserPanel = item => {
const { navigation } = this.props;
const selectedUser = item;
navigation.navigate('UserPanel', { selectedUser });
}
这是我接收参数的屏幕:
constructor(props) {
super(props);
const { navigation, properties } = props;
const selectedUser = navigation.getParam('selectedUser', null);
this.state = {
allProperties: properties.allProperties || [],
selectedUser: selectedUser,
selectedUserImage: selectedUser.userImage,
selectedUserName: selectedUser.userName,
selectedUserId: selectedUser.id,
selectedUserVerified: selectedUser.verified,
propertiesFiltered: [],
modalVisible: false
};
}
我认为这不是 stackNavigation 问题,因为正如我之前所说,参数传递有效,但仅在第一次时有效,然后在随后的时间里它会从第一次开始保留数据。不过,如果你好奇的话,这里是 stackNavigator 的代码
const ProfileDrawer = createDrawerNavigator(
{
Profile: UserProfile,
About: AboutScreen,
UserProfileEdit: EditUserProfile,
EditUsers: EditUsers,
UserPanel: UserPanelScreen,
ListProperties: PropertiesList
},
{
drawerWidth: WIDTH * 0.69,
drawerType: 'front',
drawerPosition: 'right',
contentComponent: UserProfileDrawer
}
);
【问题讨论】:
-
我认为问题在于您在构造函数中设置了参数
selectedUser。该代码只运行一次。 -
这是一个有效的评论,但是,我有另一对屏幕具有几乎相同的行为并且没有这种类型的问题
标签: reactjs react-native react-navigation