Ich habe eine Komponente Admin-login.jsx und unten ist der Code für das gleiche genannt:Wie kann ich mit React ein seitenspezifisches Vollbild-Hintergrundbild anwenden?
// AdminLogin Component
class AdminLogin extends Component {
componentDidMount() {
let elem = document.querySelector('body');
addClass(elem, 'admin-login-page');
}
componentWillUnmount() {
let elem = document.querySelector('body');
removeClass(elem, 'admin-login-page');
}
render() {
return(
<div className="admin-login">
<LoginModule
submit={handleSubmit(this.onLogin.bind(this))}
email={email} password={password}
loginFailed={this.state.loginFailed}
disableSubmit={this.state.isLoading}
/>
</div>
);
}
}
admin.login.scss
@import "styles/site-mixins";
.admin-login-page {
background: url(../images/admin.login.bg.jpg) no-repeat top center fixed;
@include prefix(background-size, cover, webkit moz ms);
}
routes.js
import App from 'components/app';
import Admin from './admin/admin';
const rootRoute = {
'path': '/',
'component': App,
'childRoutes': [
Admin
]
};
export default rootRoute;
Routen/admin/admin.js
export default {
'path': 'admin-login',
'indexRoute': {
getComponent(location, cb) {
require.ensure([], (require) => {
cb(null, require('components/admin/login/admin-login').default);
}, 'admin_login');
}
},
getComponent(location, cb) {
require.ensure([], (require) => {
cb(null, require('components/admin/admin').default);
}, 'admin');
}
};
ich den Code, dass unsere unwesentlich für diese Frage ausgezogen haben. Ich versuche, die Klasse admin-login-page auf den Textkörper anzuwenden, wenn diese Komponente geladen wird, und dann die Klasse zu entfernen, wenn die Komponente aushängen.
Aber ich sehe ein sehr seltsames Verhalten. Selbst wenn die Klasse beim Aushängen entfernt wird und sich die Route ändert, bleibt das Hintergrundbild auf der Seite.
Ich werde das Bild für mehr Klarheit hinzufügen.
Wenn ich Route zu localhost: 8080/admin-login:
Wenn ich den Weg zur Wurzel URL dh localhost: 8080 durch das Logo auf localhost klicken: 8080/admin-Login verwenden reagieren-Router tag:
Beachten Sie, dass, alles ohne Refresh geschieht. Auch, Ich kann dies tun, indem Sie den Wert der Höhe des Bildschirms und dann als eine Eigenschaft auf eine der Klasse in der Komponente vorhanden, so dass, wenn die Komponente aushängen der Hintergrund verschwindet. Aber ich hätte gerne eine Lösung, bei der ich ein Vollbild-Hintergrundbild mit dem Body-Tag anwenden kann.
Vielen Dank im Voraus.
Können Sie uns zeigen Sie Ihre Routen Setup? Ich habe dies bisher behandelt, indem ich keine Klasse zum Body hinzufügte/entfernte, sondern stattdessen eine andere Komponente (Layout) für diese spezifische Route verwendete. – Mark
@Mark Ich habe die obigen Routen hinzugefügt. –