我想从API检索图像URL并将其用作背景,为此,我需要使用样式化组件。 这是我的应用代码:
const API_KEY = `some key`;
class App extends React.Component{
constructor() {
super();
this.state = {
background: ""
}
}
componentDidMount() {
const todayDate = new Date();
this.getImage(todayDate);
}
getImage = async (date) => {
console.log('connecting...');
const URL = `https://api.nasa.gov/planetary/apod?api_key=${API_KEY}`;
const apiCall = await fetch(URL);
const data = await apiCall.json();
this.setState({
background: data.url
});
console.log(data);
}
render(){
return(
<MainContainer>
<Header>Picture</Header>
<Image background={this.state.background}/>
</MainContainer>
)
}
}
来自Image
的代码:
const ImageDiv = styled.img`
height: 100px;
width: 100px;
margin-top: 15px;
background: url(${props => props.background});
`;
class Image extends React.Component{
render(){
console.log("+++"+this.props.background)
const url = this.props.background;
return(
<ImageDiv src={url}></ImageDiv>
)
}
}
export default Image;
我尝试使用this.props.background
,但效果不佳。我总是用background: url();
来获得元素。我哪里做错了?我想作为道具发送从API获得的新背景URL,并将其设置为样式组件background
。为了进行比较,我将background设置为element上的image src,它可以工作,但是我需要使用url来进行样式设置。
答案 0 :(得分:1)
您正在将背景作为src
的{{1}}属性,但是使用了ImageDiv
。试试:
props.background