Почему новый фон не отображается в styleled-компонентах? - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу получить URL изображения из API и использовать его в качестве фона, для этого мне нужно использовать styled-компоненты.Это код моего приложения:

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();.Где я неправ?Я хочу отправить в качестве реквизита новый фоновый URL-адрес, полученный от API, и установить его как styled-components background.Для сравнения, я установил фон как image src для элемента, и он работает, но мне нужен url для работы в стиле.

Мой вывод консоли: enter image description here

1 Ответ

0 голосов
/ 27 сентября 2018

Вы передаете фон как src реквизит ImageDiv, но используете props.background.Попробуйте:

const ImageDiv = styled.div`
  height: 100px;
  width: 100px;
  margin-top: 15px;
  background: url(${props => props.src});
`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...