将参数传递到上一个屏幕并使用react-navigation进行更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将参数传递到上一个屏幕并使用react-navigation进行更新相关的知识,希望对你有一定的参考价值。

我正在开发一个我目前无法推进的应用程序,如果有人可以帮助我,我会非常感激,因为我仍然是新的反应原生,

应用程序必须生成一个报告,为此,您必须捕获产品的序列号,这些数据可以从TextInput捕获或使用相机扫描条形码或QR码,重点在于触摸它时的图像,它会将您发送到相机的屏幕。

我的问题是,如何让扫描仪读取的信息转到上一个屏幕,并且数据会自动放入TextInput?

我想我必须使用this.props.navigation.navigate ('RouteName', / * params go here * /)this.props.navigation.getParam (paramName, defaultValue)发送和接收数据,但我不知道你是否必须使用componentDidMountcomponentWillMount,在任何一种情况下,你能解释它是如何工作的吗?查看文档,但我不清楚它们是如何使用的,提前感谢您抽出宝贵时间给我一些帮助

答案

从上面的注释中,您将使用以下功能导航到扫描仪屏幕。

QRScanner ()  
  const navigateAction = NavigationActions.navigate ( 
    routeName: 'QRScanner' 
  ); 
  this.props.navigation.dispatch (navigateAction); 

您应该能够将参数传递到params键的下一个屏幕。

QRScanner = () =>  
  const navigateAction = NavigationActions.navigate ( 
    routeName: 'QRScanner',
    params:  sendSerialNumber: this.sendSerialNumber, // pass the parameter here
    ); 
  this.props.navigation.dispatch (navigateAction); 

这是sendSerialNumberQRScanner函数在同一屏幕中的函数,并使用您要发送的序列号的值更新状态。

sendSerialNumber = (serialNumber) => 
  this.setState(serialNumber)

所以你的第一个屏幕看起来像这样:

export default class Screen1 extends React.Component 

  constructor(props) 
    super(props);

    this.state = 
      serialNumber: 'unknown'
    
  

  QRScanner = () =>  
    const navigateAction = NavigationActions.navigate ( 
      routeName: 'QRScanner',
      params:  sendSerialNumber: this.sendSerialNumber, 
      ); 
    this.props.navigation.dispatch (navigateAction); 
  

  sendSerialNumber = (serialNumber) => 
    this.setState(serialNumber)
  

  render() 
    return (
      <View style=styles.container>
        <Text>Inital Screen</Text>
        <Button title='Go to QRScreen' onPress=this.QRScanner />
        <Text>serial number: this.state.serialNumber</Text>
      </View>
    )
  

然后你可以在几个地方捕获发送的参数。虽然最好在回去之前使用它,但是将您找到的序列号传递给函数。您可以像这样访问您传递的功能

this.props.navigation.state.params.sendSerialNumber('serial number to send back')

以上是关于将参数传递到上一个屏幕并使用react-navigation进行更新的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从一个活动传递到上一个活动

将数据传递到上一个活动并使用相同的按钮移动到下一个

使用KeyboardAvoidingView时,react-navigation标题后面的内容

在父组件的状态更改中重新呈现子组件

react-navigation

使用反应导航和中继进行乐观更新