#reactjs #styled-components
#reactjs #стилизованные компоненты
Вопрос:
Итак, я создал этот компонент с фоновым изображением, но мне нужно динамически передавать URL-адрес изображения, чтобы мне не приходилось вручную копировать и вставлять весь код на каждую страницу.
Вот мой текущий метод добавления изображения в мой компонент
import Photo from './images/photo-1.jpg'
const Section = styled.section`
background: url(${Photo}) center;
`
Моя проблема в том, что если я хочу повторно использовать этот компонент, я не понимаю, как я могу передать пользовательское значение изображения на основе страницы, на которой я нахожусь?
Я пробовал это, но он говорит, что изображение не определено.
const Component = ({image}) => {
return (
<Section image={image}></Section>
}
Затем в папке «Мои страницы» я передаю его следующим образом
import Photo from './images/photo-1.jpg'
<Component image={Photo} />
Но по какой-то причине это не работает
Например, если я нахожусь на home
странице, которую хочу photo-1.jpg
отобразить. Но если я нахожусь на About
странице, которую хочу photo-2.jpg
отобразить.
Поэтому я хочу использовать <Component image={PhotoTwo} />
бесконечно и просто передать любое фоновое изображение, которое мне нужно использовать на основе моей страницы.
Есть какие-нибудь идеи, почему он говорит image
, что не определен?
Вот мой код, обычно содержащий одно изображение.
import React from 'react';
import styled from 'styled-components';
import Photo from './images/photo-1.jpg'
const Section = styled.section`
background: url(${Photo}) center;
`
const Component = () => {
return (
<Section>My Section</Section>
}
Затем на моей домашней странице я просто добавляю его обычно следующим образом
const Home = () => {
return (
<>
<Component />
</>
);
};
export default Home;
И это прекрасно показывает мое фотоизображение, если у меня есть только одно изображение. Но что, если я хочу повторно использовать этот компонент, но передать другой образ? Как бы я это сделал?
Комментарии:
1. Можете ли вы указать более подробную информацию? например, ваш полный код?
2. что еще вам нужно? единственное, что отображает фоновое изображение, — это «background: url ($ {Photo}) center;», так что это прекрасно работает только с одним изображением. Но если я хочу передать URL-адрес изображения динамически, то именно тогда у меня возникают проблемы
3. Например, что такое
styled.section
?4. Я добавил блок ниже. Это просто мой стилизованный компонент, показывающий изображение
Ответ №1:
В Styled Section
вы импортируете реквизит неправильным способом.
Если вы передаете реквизит изображения в Styled Section
,
<Section image={image}></Section>
Внутри Styled Section
вы получите такие реквизиты, как,
const Section = styled.section`
background: url(${(props) => props.image || 'fallback-image.jpg' }) center;
`
Ссылка: