react native - 如何将参数从一个组件传递到另一个组件?

尝试程序

我有 2 个屏幕,一个带有图像选择器和上传功能,另一个带有地图和标记,

我的目标是添加带有照片的标记,并将该照片参考放在我在 firebase 中的标记集合中。

到目前为止,我设法把标记 latlng,

我在地图屏幕内使用模态:在模态内我调用图像选择器,一旦我上传照片并使用:

//inside UploadScreen ~~~
const urlRef =  storage()
            .ref(filename)
            .getDownloadURL();
            console.log('url: ', urlRef)

我需要 urlRef 出现在我的其他屏幕模式上。

  <Modal
       isVisible
       transparent
       onBackButtonPress={() => this.setState({ activeModal: null })}
       onBackdropPress={() => this.setState({ activeModal: null })}
      >
        
        <View style={styles.modalView}>
        <UploadScreen />  
        <TouchableOpacity onPress={()=>this.setState({activeModal: null})}>
          <Text> Close</Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={() =>this._addMarker()}> //this adds the marker latlng
          <Text>add marker</Text>
        </TouchableOpacity>
        
        </View>
      </Modal>

在我的地图屏幕上,我调用<UploadImage/>加载该上传图像组件,上传完成后,我得到了 urlRef,我需要将其放入地图屏幕中的标记集合中。

 _addMarker() {
    console.log('marker cords?: ', this.state.marker)
    console.log('marker cords?: ', this.state.marker.longitude)
    markerRef.add({
      longitude: this.state.marker.longitude,
      latitude: this.state.marker.latitude,
      email: this.state.userEmail,
      imageUri: "will be image uri"
      
    })

  }

请给我一些指导,我不确定那里是否需要道具或其他东西。

欢迎任何建议或帮助。

提前致谢

康斯坦丁

通常,React 中的通信流程是自上而下的。这意味着父级将一些道具传递给子级,然后子级又对这些道具做一些事情。

但是,显然可以按照您想要的方式进行操作。为此,最简单的方法是useState在您的模态中使用创建一个状态然后你将 setter 传递给 child,当 child 中的值被填充时,然后你将它传回给 parent。

在代码中它看起来像这样:

Modal.js (parent)

const [childUrlRef, setChildUrlRef] = useState(null);

<Modal
  isVisible
  transparent
  onBackButtonPress={() => this.setState({ activeModal: null })}
  onBackdropPress={() => this.setState({ activeModal: null })}
 >
        
   <View style={styles.modalView}>
   <UploadScreen setChildUrlRef={setChildUrlRef} />  
   ...
 </Modal>

UploadScreen (child)

当您在孩子中获得您的价值时,将其设置为状态以确保 React 看到它,然后将其传递给您的父母。

const [url, setUrl] = useState(null);

useEffect(() => {
  if (url) props.setChildUrlRef(url);
}, [url])

...

const urlRef =  storage()
.ref(filename)
.getDownloadURL();
console.log('url: ', urlRef)

setUrl(urlRef);
    ...

因此,您获取变量,将其设置为本地状态,然后使用 useEffect 监视该变量中的更改,一旦检测到更改,就会触发 useEffect 并通过通过 props 传递的状态设置器在您的父级中设置值.

如果您需要在没有直接关系的组件之间传递数据,请考虑使用ReduxReact Context

编辑:我刚刚看到您的 Modal 不起作用。如果你不能重构它,你仍然可以将一个函数传递给孩子,这会setState在你的父母内部触发

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React-native-将数据从一个屏幕传递到另一个屏幕

React Native:从一个类到另一个类获取数据

如何在React Native中将数据从一个视图传递到另一个视图?

如何在另一个组件渲染后渲染一个React Native组件?

将组件的值传递给另一个场景以在post方法中使用-React Native

将状态从一个React组件传递到另一个

React Native将一个组件传递给另一组件

使用React Router Link时如何将道具从一个组件传递到另一个组件

如何将React Function中的参数从一个文件传递到另一个文件

React Native-将状态传递给另一个组件

React Native:使用navigationOptions将参数传递到另一个屏幕

如何在React Native中从另一个功能组件更改一个功能组件的状态?

React Native将一个组件插入另一个

React-如何将API数据从一个组件传递到另一个js文件中的另一个组件?

如何在React Native中导航到类组件中的另一个屏幕

React Native将Text组件添加到另一个Text组件中

React Native,从一个组件导航到另一个组件

如何在 react-native 中将函数的结果从一个组件传递到另一个组件?

React Native - 将数据从一个组件传递到另一个

React-Native:如何将组件中的项目与另一个组件中的项目绑定?

如何将 props(从 Redux 获取的)从一个组件传递到另一个(React/Redux)?

如何在 React 中将静态数据从一个组件传递到另一个组件?

React-Router:使用 Navlink 将 props 从一个组件传递到另一个组件

如何将数组作为结果从一个功能组件传递到 React 中的另一个

将数据从一个屏幕传递到另一个 React-native

如何从 react-native 中的另一个功能组件访问一个功能组件的状态?

如何将参数从一个 React 组件导入到另一个组件

React Native - 如何将数据传递给作为另一个组件内部属性的组件

无法使用 React Native 将值从一个组件传递到另一个组件