哈哈,又是我,废话很少说,直接看代码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> ) } }
大牛快来评论区批评、指正、补充函数