
[英]I am using react-image-crop with react and Express To upload profile pic with Crop
[英]'pic' is not defline with React
我正在开展一个学校项目,该项目是关于创建一个网站,显示一个带有 Flickr API 的照片库(在这种情况下为 Photo.search)我正在努力解决说“图片未定义”的错误。 我不知道在这种情况下该怎么办。 我会很高兴收到任何帮助来解锁我。 提前致谢 !
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor(){
super();
this.state = {
pictures: [],
page: 1,
total_pages: -1
};
}
renderPhotos(){
console.log(
this.state.pictures
)
return(
<div>
this.state.pictures.map((pic) => {
<img className="img-thumbnail m-2" src={'https://farm'+pic.farm+'.staticflickr.com/'+pic.server+'/'+pic.id+'_'+pic.secret+'_w.jpg'} alt="bike" />
})
</div>
)
}
componentDidMount(){
alert(process.env.REACT_APP_API_KEY);
fetch(' https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key={APIKEY}_id=&tags=bikerace%2Cboulderbiketour&per_page=42&page=1&format=json&nojsoncallback=1')
.then(function(response){
return response.json();
})
.then(function(j){
alert(JSON.stringify(j));
if (this.state.total_pages == -1){
this.setState({total_pages: j.photos.pages,pictures: j.photos.photo})
}
else{
this.setState({pictures: j.photos.photo})
}
})
}
NextPage = () => {
var CurrentPage = this.state.page;
CurrentPage++;
if (CurrentPage <= this.state.total_pages){
this.setState({page:CurrentPage});
}
}
PreviousPage = () => {
var CurrentPage = this.state.page;
CurrentPage--;
if (CurrentPage >= 1){
this.setState({page:CurrentPage});
}
}
render() {
return (
<div className="App">
<header className="App-header">
<h1 className="App-title">Welcome to React</h1>
</header>
<p>
<div>
Page {this.state.page}
</div>
<div className="gallery p-5">
{this.renderPhotos()}
</div>
<div>
<button onClick={this.PreviousPage}>Previous</button>
<button onClick={this.NextPage}>Next</button>
</div>
</p>
</div>
);
}
}
export default App;
老实说,这里没有很多关于 go 的信息,但只是通过查看代码,我看到了我经常遇到的一些事情。 React 在渲染项目时很有趣,因为它会渲染,然后更新 state,然后再次渲染。 这与如果任何未定义的内容 React 只会崩溃的事实相混合,这意味着它将在第一次渲染之前崩溃,然后再进行第二次渲染。 如果您尝试将其注销,您将在控制台日志中看到这一点。 反应组件中通常有多个渲染,如果任何渲染中未定义任何内容。 React 只会崩溃。
在您的情况下,React 会在此之前检查 map。state.pictures 已定义,因此它在进入第二个渲染之前崩溃。 这是您解决此问题的方法。
this.state && this.state.pictures.map(pic)
这需要整本教科书来解释为什么会这样,但确实如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.