如何在反应中将数据从子函数传递给父组件

阿西卡夫

我想要父组件中的 url 并希望将其保存在 imageUrl 状态中,url 在 handleUploadImage 函数中(图像下载 url 是我在父组件中需要的 url)

myFunc.js

export const handleUploadImage = (image: any, folderName = "adhaar") =>{
    let file = image;
    const storage = firebase.storage();
    const storageRef = storage.ref();
    const uploadTask = storageRef.child(`${folderName}/` + file.name).put(file);
  
    uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
      (snapshot) =>{
        storageRef.child(file.name).getDownloadURL().then(url => { 
            console.log(url)
        })        
      },(error) =>{
        throw error
      },() => {        
        uploadTask.snapshot.ref.getDownloadURL().then((url) =>{           
          console.log("image download url:", url)
        })  
     }
   ) 
  }

父组件

const ParentComponent = ()=>
{
    const [imageUrl setImageUrl] =useState()

      const getUrl = ()=>
      {
        handleUploadImage(image)
          setImageUrl()
      }

return(
   <button onClick={getUrl}> Get Url </button>

)


}


达伍德·艾哈迈德

只需将您的 setImage 传递给孩子并将其设置在那里,就像这样:

    const ParentComponent = ()=>
{
    const [imageUrl, setImageUrl] =useState()

      const getUrl = ()=>
      {
        handleUploadImage(image, setImage)
          
      }

return(
   <button onClick={getUrl}> Get Url </button>

)


}
/////////////////////

    export const handleUploadImage = (image, setImage) =>
  new Promise((resolve, reject) => {
    let file = image;
    const storage = firebase.storage();
    const storageRef = storage.ref();
    const uploadTask = storageRef.child(`${folderName}/` + file.name).put(file);

    uploadTask.on(
      firebase.storage.TaskEvent.STATE_CHANGED,
      (snapshot) => {
        storageRef
          .child(file.name)
          .getDownloadURL()
          .then((url) => {
            console.log(url);
// where you need your url
setImage(url)
          });
      },
      (error) => {
        reject(error);
      },
      () => {
        uploadTask.snapshot.ref.getDownloadURL().then((url) => {
          console.log('image download url:', url);
// or set image here 
setImage(url)
          resolve(url); // this is important
        });
      }
    );
  });

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数据从子级传递到父级组件-反应-通过回调函数

如何在Angular 4中将值从子组件传递到父组件

如何在反应中将选项值传递给函数?

如何将信息从子组件传递到父组件中的函数?(反应本机)

如何在React.js中将数据从子组件发送到父组件

如何在React中将表单值从子组件传递给父组件

如何在不使用ref方法的情况下从“父项” /“传递道具”到“父项”组件调用子函数?

在React Native中将数据从子组件传递到父组件?

如何在React中将Json对象数组从子类组件传递到父类组件?

如何在React.JS中将数据从子组件传递到父组件?

如何在React.js中将数据从子组件传递到父组件

如果子组件是动态组件,如何将数据从子组件传递给父组件

如何在Angular4中将数据从子组件传递到父组件

如何在反应中将变量传递给函数

如何将数据从子组件(子组件有自己的状态)传递给父组件?

如何将数据从子组件传递给父组件 [Angular]

如何使用反应钩子将数据从子组件传递到父组件

如何在反应中将输入数据传递给另一个组件

如何在反应中将状态从子组件传递到父组件

如何将道具从子组件传递给父组件

如何将父组件函数传递给子组件,然后从子组件 AngularJS 内部调用它

React - 如何在回调函数中将参数从子级传递给父级(onClick)

如何在 ReactJS 中将数据从子组件发送到父组件?

如何在反应中将道具传递给多级组件?

如何在Angular中将多个数据从子组件传递给父组件?

我收到一个错误 props.onSubmitForm 不是一个函数,同时试图在反应中将数据从子组件传递到父组件

在 vue 中将数据从子输入元素传递给父元素

如何在反应导航中将道具传递给屏幕组件

我们如何在 reactJS 中将数据从子节点传递给父节点?