Ответ 1
Прошло некоторое время с тех пор, как я задал этот вопрос. То, что я начал делать с тех пор, это использовать настройку create-react-app
для create-react-app
Facebook и непосредственно редактировать файлы CSS.
Я использую React.js и хочу изменить цвет фона всей страницы. Я не могу понять, как это сделать. Пожалуйста, помогите, спасибо.
Редактировать (2 сентября 18 года): у меня есть проект на GitHub, на который я ссылаюсь здесь. У меня сейчас нет этого проекта в сети, но в папке /client
находится клиентский сервер. Проверьте это. Вот как я ответил на вопрос.
Прошло некоторое время с тех пор, как я задал этот вопрос. То, что я начал делать с тех пор, это использовать настройку create-react-app
для create-react-app
Facebook и непосредственно редактировать файлы CSS.
Самое простое решение немного хаки, но вы можете использовать необработанный javascript для изменения стиля тела:
document.body.style = 'background: red;';
// Or with CSS
document.body.classList.add('background-red');
Более чистым решением может быть использование головного менеджера, такого как реагирующий шлем или компонент next.js Head
.
import React from 'react';
import {Helmet} from 'react-helmet';
class Application extends React.Component {
render () {
return (
<div className="application">
<Helmet>
<style>{'body { background-color: red; }'}</style>
</Helmet>
...
</div>
);
}
};
Некоторые css-in-js также предлагают инструменты для управления стилями глобального уровня; как стилизованные компоненты injectGlobal
.
В конце концов, есть много инструментов, обеспечивающих более чистые способы справиться с этим. Но если вы не хотите полагаться на стороннюю сторону, необработанная опция JS может быть достаточно хорошей, если вы не сделаете ее слишком интерактивной.
Самое простое решение, не делая ничего интересного, заключается в следующем:
1) Открыть public/index.html
2) Добавьте встроенный стиль к вашему телу следующим образом: <body style="background-color: red">
Реактивный шлем (https://github.com/nfl/react-helmet)
Я действительно нашел эту библиотеку очень полезной. Действительно чистое решение, я бы сказал.
Пример использования:
import Helmet from 'react-helmet';
<Helmet bodyAttributes={{style: 'background-color : #fff'}}/>
Вышеупомянутые решения говорят о добавлении внешней библиотеки, чтобы предоставить требуемую функциональность, но вместо этого вы можете просто перейти к вашему файлу Index.css и внутри уже написанного тега body добавить "background-color:" color "и его сделанный
Пожалуйста, не нужно устанавливать какие-либо пакеты очень легко и просто! добавлять
document.body.style = 'background: red;';
в ваш код JS или через CSS, как показано ниже:
const Changebackground = () => {
const stylesObj = {
background: "green"
};
return ( <
div id = "hello-world"
style = {
stylesObj
}
className = "container" >
<
/div>
)
}
export default Changebackground;
//ReactDOM.render( < Changebackground / > , document.getElementById('App'));
.container {
position: fixed;
width: 100%;
height: 100%;
z-index: -10;
text-align: center;
transition: all 500ms ease;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.5.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.5.1/umd/react-dom.production.min.js"></script>
Это было самым простым решением для меня:
// in your css file
.background-white {
background-color: white !important;
}
// in your react component
componentDidMount() {
document.body.classList.add("background-white");
}
componentWillUnmount() {
document.body.classList.remove("background-white");
}
Использование компонента componentWillMount не работает надежно. Использование document.body.style не работает надежно.
Я немного поиграл с этим. Простое решение для меня, не совсем интуитивное, все в public/index.html
:
<html style="background-color: red">
который получает нижнюю часть страницы, и вторую запись:
<body style="background-color: red">
который доставит вам верх страницы, т.е. ваш код реакции.
Две записи для одной проблемы, но все в одном файле, не требуют новых библиотек и, похоже, работают.
Если вы используете React с Bootstrap, просто включите класс Bootstrap фонового цвета в <body>
в файле index.html
, например так:
<body class="bg-light">
Вы можете выбрать другие цвета на https://getbootstrap.com/docs/4.3/utilities/colors/#background-color
Через некоторое время, изучая Интернет, я нашел это решение в устаревшем репозитории github:
document.body.style.backgroundColor = "INSERT_COLOR";
Вы можете использовать модуль CSS в React. Ниже приведен код Javascript для файла с именем Home.js
import styles from './Home.module.css';
const Home = ()=>{
return(
<div className = {styles}>
</div>
);
}
export default Home;
И в модуле css с именем Home.module.css (формат [name].module.css), поместите следующее, и ваша страница будет иметь синий цвет фона
body{
background-color: blue;
}
попробуйте это в своем коде
componentDidMount() {
document.body.style.backgroundColor = "white"
}
Надеюсь помочь.
Создайте компонент-упаковщик с идентификатором типа "обертка", а затем создайте стиль с состоянием цвета:
getInitialState: function () {
return { color: "white" }; // Set your color for initial state.
},
changeColor: function () {
this.setState({ color: "black" }); // Set your changed color.
},
render: function () {
var style = { backgroundColor: this.state.color };
// The wrapper (root) component
return (
<div id="fullscreen" style={style}>
<a onClick={this.changeColor}>change</a>
</div>
);
}
Результат должен выглядеть примерно так:
<body>
<div id="fullscreen" style="background-color: YOUR CUSTOM COLOR">
<a onclick="THE REACT FUNCTION"></a>
</div>
</body>