哈哈,又是我,廢話很少說,直接看代碼javascript
// bad class Demo extends React.Component { render() {} componentDidMount() {} componentWillMount() {} } // good class Demo extends React.Component { componentWillMount() {} componentDidMount() {} render() {} }
// bad <Demo className='a' value={a} onClick={() => {}} /> // goood <Demo className='a' value={a} onClick={() => {}} />
const someProps = { a: 1, b: 2, c: 3 } // bad <Demo a={someProps.a} b={someProps.b} c={someProps.c} /> // goood <Demo {...someProps} /> // 當有些屬性不須要傳遞的時候 const { a, ...otherProps } = someProps <Demo {...otherProps} />
// bad class Demo extends React.Component { handleClick() { } render() { <Button onClick={this.handleClick.bind(this)} /> } } // good class Demo extends React.Component { handleClick = () => { } render() { <Button onClick={this.handleClick} /> } }
// bad class Demo extends React.Component { handleClick = () => { this.props.add(this.state.a + this.state.b) this.props.respond() } } // good class Demo extends React.Component { handleClick = () => { const { a, b } = this.state const { respond, add } = this.props add(a + b) respond() } }
index沒辦法利用key來避免沒必要要的渲染java
// bad class Demo extends React.Component { render() { return arr.map((item, i) => ( <span key={i}>{item.name}</span> )) } } // good class Demo extends React.Component { render() { return arr.map(item => ( <span key={item.id}>{item.name}</span> )) } }
影響閱讀react
// bad class Demo extends React.Component { render() { return ( <div style={{ width: '100px', height: '100px', textAlign: 'center', lineHeight: '100px' }}>11</div> ) } } // good const styles = { container: { width: '100px', height: '100px', textAlign: 'center', lineHeight: '100px' } } class Demo extends React.Component { render() { return ( <div style={styles.container}>11</div> ) } }
必定程度上能及時發現問題,固然更好的選擇是flow、tsdom
// bad class Demo extends React.Component { // nothing } // good import PropTypes from 'prop-types'; class Demo extends React.Component { static propTypes = { className: PropTypes.string, style: PropTypes.object, url: PropTypes.oneOfType([ PropTypes.string, PropTypes.array, ]), onClick: PropTypes.func, } }
// bad class Demo extends React.Component { render() { return ( <Hello onClick={() => { a++ this.props.add() }}>11</Hello> ) } } // good class Demo extends React.Component { handleClick = () => { a++ this.props.add() } render() { return ( <Hello onClick={this.handleClick}>11</Hello> ) } }
大牛快來評論區批評、指正、補充函數