Also habe ich eine Suchfeldkomponente, die in der Navigationsleiste auf allen Seiten der Website verwendet werden soll. Ich mag auch daher diese Komponente/html in anderen Seiten der Website verwenden ich es unterCSS-Module und React-Komponenten, ich habe das Gefühl, CSS-Module nicht korrekt zu verwenden und meine Stile kollidieren
LocationSearchBox.js gezeigt in einer Komponente setzen
import React, {PropTypes} from 'react'
import {Button,FormGroup, FormControl} from 'react-bootstrap'
import styles from '../scss/components/LocationSearchBox.scss'
export default function LocationSearchBox(props) {
return (
<FormGroup>
<FormControl type="text" placeholder="Search" />
<Button bsStyle="success" type="submit" className={styles.navbarSubmitButton}>Get Weather</Button>
</FormGroup>
)
}
Ich verwende CSS Module mit Web-Pack meiner SCSS zu konvertieren in css und generieren zufällige Stile für die Verwendung in Klassennamen für die Komponenten.
LocationSearchBox.scss
.navbarSubmitButton {
margin-left: 20px;
}
Die in der Komponente fügt nur etwas Platz zwischen dem Eingang und Submit-Button.
Dies ist die NavBar-Komponente wieder mit Hilfe von React-Bootstrap.
MainNavBar.js
import React from 'react';
import {Navbar, NavbarHeader, NavbarBrand, NavbarCollapse} from 'react-bootstrap';
import {default as Search} from './LocationSearchBox'
import styles from '../scss/components/MainNavbar.scss'
export default function MainNavbar() {
return(
<Navbar fixedTop className={styles.navbarColour} >
<NavbarBrand pullLeft >
<a href='#' className={styles.Brand}>Weather-app</a>
</NavbarBrand>
<Navbar.Collapse>
<Navbar.Form pullRight>
<Search/>
</Navbar.Form>
</Navbar.Collapse>
</Navbar>
)
}
Jetzt habe ich eine Homepage Komponente erstellt und ich möchte im Inneren der LocationSearchBox Komponente verwenden.
Home.js
import React from 'react'
import {default as Search} from '../components/LocationSearchBox'
import styles from '../scss/components/Home.scss'
export default function Home() {
return (
<div className={styles.center}>
<h2>Enter a city and state</h2>
<Search />
</div>
)
}
Die Suchkomponente innerhalb Home.js, hat die Taste die gleiche margin-left Eigenschaft die Navigationsleiste war, so dass es auf der rechten Seite etwas bewegt wird. Ich möchte nicht, dass das passiert. Ich möchte, dass es nur auf das Suchfeld angewendet wird, das in der Navigationsleiste verwendet wird, aber ich bin nicht sicher, wie das mit CSS-Modulen und React-Komponenten funktioniert, ohne ein separates Suchfeld für die Navigationsleiste zu erstellen, aber ich sehe das als sinnlos habe genau den gleichen Code.
Ich habe das Gefühl, dass ich CSS-Module überhaupt nicht richtig verwende, ich benutze seine Philosophie und den Sinn von CSS-Modulen nicht richtig.