所以我有一个搜索框组件,可以在网站的所有页面的导航栏中使用。我还想在网站的其他页面中使用此组件/ html,因此我将其放在下面显示的组件中
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>
)
}
我正在使用带有web包的css模块将我的scss转换为css,而不是生成随机样式以在组件的类名中使用。
LocationSearchBox.scss
.navbarSubmitButton {
margin-left: 20px;
}
在组件内部使用它只是在输入和提交按钮之间添加了一些空格。
这是在react-bootstrap的帮助下再次使用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中的搜索组件,该按钮具有相同的margin-left属性是导航栏,因此它向右移动了一点。我不希望这种情况发生。我希望它只适用于导航栏中使用的搜索框,但我不确定如何使用CSS模块和React组件,而无需为导航栏创建单独的搜索框,但我发现它毫无意义有完全相同的代码。
我觉得我根本没有正确使用CSS模块,我没有正确使用它的哲学和CSS模块。
答案 0 :(得分:0)
如果不理解为什么在这些位置需要在视觉上有所不同,很难说最好的方法是什么,但通常我会更新<Search />
以接受新的道具以有条件地应用额外的保证金
如果这两种风格可能被多次使用,则可能是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>