Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 状态变量的值丢失-反应_Reactjs_Firebase_Jsx - Fatal编程技术网

Reactjs 状态变量的值丢失-反应

Reactjs 状态变量的值丢失-反应,reactjs,firebase,jsx,Reactjs,Firebase,Jsx,我想用拉威尔和Firebase制造一个积垢。当我处理文本时,一切都很完美,但当我尝试将图像上传到Firebase存储时遇到了麻烦。我可以保存它,但无法获取其URL 我写了2个“console.log”。在第一个示例中,URL在那里,但是第二个示例(当我尝试从state变量获取URL时)没有返回任何内容 handleSubmit = event =>{ event.preventDefault(); const {imagen} = this.state; if(imagen

我想用拉威尔和Firebase制造一个积垢。当我处理文本时,一切都很完美,但当我尝试将图像上传到Firebase存储时遇到了麻烦。我可以保存它,但无法获取其URL

我写了2个“console.log”。在第一个示例中,URL在那里,但是第二个示例(当我尝试从state变量获取URL时)没有返回任何内容

handleSubmit = event =>{ 
  event.preventDefault();

  const {imagen} = this.state;
  if(imagen!=null){
      const uploadTask = storage.ref(`imagenes/${imagen.name}`).put(imagen);
      uploadTask.on('state_changed', 
      (snapshot) => {
        const progress = Math.round((snapshot.bytesTransferred / snapshot.totalBytes) * 100);
        this.setState({progress});
      }, 
      (error) => {
        console.log(error);
      }, 
    () => {
        storage.ref('imagenes').child(imagen.name).getDownloadURL().then(url => {
            this.setState({url});
            console.log(this.state.url); //<<<<<<<<<<<<<SHOW URL (IT'S OK!)
        })
    });
  }

var direccion = null;
const form = event.target;
let data = new FormData(form);
data.append('url', this.state.url);
console.log(this.state.url); //<<<<<<<DOESN'T SHOW URL !! (HERE'S THE TROUBLE)
handleSubmit=event=>{
event.preventDefault();
const{imagen}=this.state;
如果(imagen!=null){
const uploadTask=storage.ref(`imagenes/${imagen.name}`).put(imagen);
uploadTask.on('状态已更改',
(快照)=>{
const progress=Math.round((snapshot.bytesttransfered/snapshot.totalBytes)*100);
this.setState({progress});
}, 
(错误)=>{
console.log(错误);
}, 
() => {
storage.ref('imagenes').child(imagen.name).getDownloadURL()。然后(url=>{
this.setState({url});

console.log(this.state.url);//数据从Firebase异步加载。当
console.log(this.state.url);//数据从Firebase异步加载时//
此.setState是异步的

如果要获取更新的状态值,请添加回调并访问其中的新状态,如

this.setState({ url: 'some url'}, () => {
 conosle.log(this.state.url);
});
此.setState是异步的

如果要获取更新的状态值,请添加回调并访问其中的新状态,如

this.setState({ url: 'some url'}, () => {
 conosle.log(this.state.url);
});

setState
是异步的,当您
控制台时,它不会在下一行代码上更改。log
setState
是异步的,当您
控制台时,它不会在下一行代码上更改。log