2016-08-09 42 views
0

したがって、サイトのすべてのページのナビゲーションバーで使用する検索ボックスコンポーネントがあります。また、私は私が私のSCSSを変換するウェブパックでCSSモジュールを使用していますCSSモジュールとリアクションコンポーネントを使用すると、CSSモジュールを正しく使用していないように感じられ、スタイルが矛盾しています

LocationSearchBox.js

の下
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> 
    ) 
} 

を示す部品の内側にそれを置くので、サイトの他のページでは、このコンポーネント/ HTMLを使用したいですcssに変換し、コンポーネントのクラス名に使用するランダムなスタイルを生成する。これは、コンポーネントの内部で使用

LocationSearchBox.scss

.navbarSubmitButton { 
    margin-left: 20px; 
} 

だけ入力し、送信ボタンの間にいくつかのスペースを追加します。

これは、反応ブートストラップの助けを借りてNavBarコンポーネントです。

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> 
    ) 

} 

は今、私はホームページのコンポーネントを作成していると私はそれの内側にLocationSearchBoxコンポーネントを使用します。

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> 
    ) 
} 

Home.js内部検索コンポーネント、ボタンは、それが適切なビットに移動されるように同じマージン左プロパティは、ナビゲーションバーであった有します。私はそれが起こることを望んでいません。ナビゲーションバー内で使用される検索ボックスにのみ適用したいと思っていますが、ナビゲーションバーのための別の検索ボックスを作成せずにCSSモジュールとReactコンポーネントでそれを行う方法はわかりませんが、まったく同じコードを持っている。

CSSモジュールを正しく使用していないような気がします。私はその考え方とCSSモジュールのポイントを正しく使用していません。

答えて

0

なぜその場所で視覚的に異なる必要があるのか​​を理解せずに最良のアプローチが何であるかは言い難いですが、一般的には余分なマージンを条件付きで適用するために新しい小道具を受け入れるように更新します。

これら2つのスタイルが何度も使用される可能性がある場合はtheme次のようになります。

<FormControl type="text" placeholder="Search" /> 
<Button bsStyle="success" type="submit" className={props.theme === 'foo' ? styles.navbarSubmitButton : null}>Get Weather</Button> 

それともオーバーライドの多くはである場合は、特定のコールサイトで異例のスタイルを追加するbuttonClassName小道具を提供できます。

<FormControl type="text" placeholder="Search" /> 
<Button bsStyle="success" type="submit" className={`${styles.navbarSubmitButton} ${props.buttonClassName}`}>Get Weather</Button> 
関連する問題