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