为什么未在样式组件中呈现新背景?

时间:2018-09-27 11:17:32

标签: reactjs styled-components

我想从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来进行样式设置。

我的控制台输出: enter image description here

1 个答案:

答案 0 :(得分:1)

您正在将背景作为src的{​​{1}}属性,但是使用了ImageDiv。试试:

props.background