# 組件樣式管理
組件的樣式該如何書寫?組件樣式的私有化?
## React組件樣式行內式
我們按照html的書寫方式,書寫如下代碼
~~~
render() {
return (
<Fragment>
<div style="background:pink;" className="title">評論組件標題</div>
<ul>
{this.renderList()}
</ul>
</Fragment>
)
}
~~~
會報錯如下所示:
```
react-dom.development.js:17117 The above error occurred in the <div> component:
react-dom.development.js:55 Uncaught Invariant Violation: The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.
```
這里所說的問題是不可以在style屬性的值上書寫字符串。它期望的是一個對象。
我們做如下修改:
~~~
render() {
return (
<Fragment>
<div style={{background:'red',textAlign:'center'}} className="title">評論組件標題</div>
<ul>
{this.renderList()}
</ul>
</Fragment>
)
}
~~~
在style屬性上,我們第一個大括號是JS語法符號。內部的大括號則是js對象。
<iframe width="100%" height="300" src="//jsrun.net/UHyKp/embedded/all/light" allowfullscreen="allowfullscreen" frameborder="0"></iframe>
## 行內式的另一種寫法
我們可以將樣式寫在外面,這樣的好處是當前組件中如果用到同樣的樣式。我們可以復用。
~~~
render() {
var style = {background:'red',textAlign:'center'};
return (
<Fragment>
<div style={style} className="title">評論組件標題</div>
<ul style={style}>
{this.renderList()}
</ul>
</Fragment>
)
}
~~~
<iframe width="100%" height="300" src="//jsrun.net/9HyKp/embedded/all/light" allowfullscreen="allowfullscreen" frameborder="0"></iframe>
## 總結
1.在這里面我們對組件樣式管理已經了解了一下。其實這樣已經可以達到組件樣式的封閉性(只能在當前組件中生效)。
2.思考題:我們對樣式這樣管理是達到了封閉性,如果希望樣式全局生效如何管理呢?
- webpack復習
- React基礎
- 前端三大主流框架對比
- React中幾個核心的概念
- React基礎語法
- React JSX語法
- React組件
- 普通組件
- 組件通信-父向子傳遞
- 組件拆成單個文件
- 面向對象復習
- Class組件基礎
- Class組件的私有狀態(私有數據)
- 案例:實現評論列表組件
- 組件樣式管理
- 組件樣式分離-樣式表
- CSS模塊化
- 生命周期
- React組件生命周期
- Counter組件來學習組件生命周期
- 生命周期總結
- 生命周期案例
- React評論列表
- React雙向數據綁定
- React版todolist
- 其它提高(了解)
- 組件默認值和數據類型驗證
- 綁定this并傳參的三種方式
- 祖孫級和非父子組件傳遞數據(了解)
- React路由
- 路由基礎
- 動態路由
- 路由嚴格模式
- 路由導航定位
- 路由重定向
- 路由懶加載
- WolfMovie項目
- 項目初始化
- AntDesign使用
- 其它相關了解