Github: github.com/aototo/blog
喜歡文章的朋友star 支持一下,長期更新...毫不偷懶javascript
const Greeting = ({ name, style }) => {
return <div style={style}>{name}</div>
};複製代碼
常常會遇處處理數組數據的狀況,能夠用下面的方式簡單的渲染出來。html
render() {
return (
(<ul> {List.map((item) => ( <li>{item}</li> ))} </ul>)
)
}複製代碼
好比 <input type="text" >
每次寫很麻煩吧,能夠封裝一個成一個組件java
const Input = (props) => {
return <input type = {props.type} {...props} /> }複製代碼
組件能夠分紅不少類類,有的是佈局類,有的是功能類。下面是一種佈局類的組件。react
<FlexContainer>
<div style={{ flex: 1 }}>{this.props.leftSide}</div>
<div style={{ flex: 2 }}>{this.props.rightSide}</div>
</FlexContainer>複製代碼
高階組件很像decorator,提高組件的能力。好比你想一些組件裏面使用一下功能,react-router 中git
import { withRouter } from 'react-router'
withRouter(SomeComponent)複製代碼
例子:github
var Enhance = ComposedComponent => class extends React.Component {
componentDidMount() {
this.setState({ name: "李狗子" });
}
render() {
return <ComposedComponent {...this.props} name = {this.state.name} />; } };複製代碼
項目中常常會用到這兩種狀況如:
受控組件,更新的時候須要使用this.setState數組
constructor() {
super();
this.state = {value: ""}
}
render() {
return <input type="text" value={this.state.value} /> }複製代碼
不受控組件,主要須要經過ref來獲取input的值。react-router
render() {
return <input type="text" ref="myInput" /> }複製代碼
兩種方法均可以在特定的場合去使用,我的以爲數據相對重要的頁面須要使用受控組件會比較合適。less
項目中常常有判斷語句,用三元表達式能夠很方便的寫出想要的邏輯ide
const demo = ({ isOK }) => {
return isOK
? <p> Yes </p>
: <p> No </p>
};複製代碼
可使用function來更新state
this.setState((prevState, props) => ({
return ...
}));複製代碼
場景:下面的例子是初始化組件後,讓input默認獲取光標。ref最終指向的已經渲染好的DOM節點,或者是react class的實例。具體能夠看官方的文檔
componentDidMount() {
this.input.focus();
}
render() {
return (
<input ref={comp => { this.input = comp; }} /> ) }複製代碼
一個很是錯誤的作法好比:
<Component {...props} />複製代碼
props上面若是有很是多的屬性,會形成很是昂貴的計算。正確的應該
<Component name = { props.name } />複製代碼
以上是平時寫React用到的一些寫法小技巧,說有用還蠻有用的!
有錯誤的地方還請指正!謝謝你們。
下面2個連接都很棒哦!記得收藏star...
參考:
react 代碼規範