react最佳实践

作者: Chummy楚寒 | 来源:发表于2017-05-12 09:52 被阅读87次

react最佳实践(基础篇)

以下仅仅是个人意见或者是react实践中的技巧,只针对代码不针对个人

  • 无论如何,请考虑好状态应该放在 组件内部的state 或者是 redux
  • 如果你的变量只是操作逻辑不会 render UI的情况下,请不要放在state中
//解构赋值 
let { state1,state2, state3 } = this.state;
let { prop1, prop2, porp3 } = this.props;
//字符串模板
 `${name}`  
//默认值处理
function toDo(name = "who", age = 12){ //to do }
//展开运算符
let obj = { name ="name", age = 12 };
toDo(...obj)
  • 书写问题
        <Spin
          spinning={props.switcher.atsFetching !== false}   // ???/
        >
  • 判断属性是否在对象或者数组中(省去循环的代码)
    if('activeIndex' in props){
        //to do
    }
  • 在合适的情况下,使用且必须推荐无状态组件(没有状态没有生命周期只传prop实现)
    // 无状态组件接收的参数必须使用 {} 包裹,它传入的是 父组件的props 
    function Button({text='按钮',color='red'}){
        return (
            <button className={btn btn-${color}}>
                <span>${text}</text>
            </button>
        )
    }
  • 类型检查
    //函数的类型检查是propTypes.func
    //布尔类型的propTypes.bool
    be:避开关键词
  • 生命周期
    //WillMount会在render之前执行,DidMount则会在render之后执行
    如果在DidMount后又setState则会 re-render
    //在执行reactComponentWillMount的时候进行setState是不会重新re-render的,
    //而是会合并state
    /*
    
    */

!!注意:禁止在shouldComponentUpdate和ComponentWillUpdate中setState,
会导致循环调用直到浏览器耗光了内存

  • react绑定this
    /*
        如果绑定this不需要传递参数的情况下可以使用::this.handleClick
        而且项目中要使用 stage-0 的提案
    */
    /* 
        在react中使用DOM原生事情,一定要在组件卸载的时候手动移除事件
        否则很有可能会造成内存泄漏
    */
    /*
        不要将合成事件与原生事件混用,否则达不到你想要的效果
    */
  • 不要直接在组件上写样式
    return < input style={{color:'red'}}> //这样每次都会得到新的style对象,造成重新render的性能消耗
    //使用先定义的方式来处理这个问题
  • react性能优化方案(在shouldComponentUpdate)
    import React from 'react';
    import { is } from 'immutable';

    class App extends Component {
        shouldComponentUpdate(nextProps,nextState){
            const thisProps = this.props || {};
            const thisState = this.state || {};
    
            if(Object.keys(thisProps).length !== Object.keys(nextProps).length
            || Object.keys(thisState).length !== Object.keys(nextState).length){
                return true
            }
    
            for(const key in nextProps){
                if(nextProps.hasOwnProperty(key) && !is( thisProps[key], nextProps[key])){
                    return true
                }
            }
    
            for(const key in nextState){
                if(nextState.hasOwnProperty(key) && !is( thisState[key], nextState[key])){
                    return true
                }
            }
    
            return false
        }
    } 
  • react建议使用的css动画库
    react-smooth react-motion
  • SVG线条动画
    vivus
  • react中遍历数组或者是对象的时候注意点
    在使用 key 的时候请不要使用自然索引,请使用id

CSS样式

  • OOCSS BEM(推荐)
  • 不要强行覆写antd或者是二次封装的组件样式
  • 不要使用浮动
  • scss使用熟练
  • 使用语义化标签

持续更新....

相关文章

  • React最佳实践

    tags:开发随笔 代码风格 用ES6,遵循Airbnb的React编码规范和javascript 编码规范。两个...

  • react最佳实践

    react最佳实践(基础篇) 以下仅仅是个人意见或者是react实践中的技巧,只针对代码不针对个人 无论如何,请考...

  • react最佳实践

    看到石墨的react文档。提到http://andrewhfarmer.com/react-ajax-best-p...

  • React开发相关资料

    React-Router 中文简明教程 总结 React 组件的三种写法 及最佳实践 [涨经验] React-UI组件

  • React 组件性能优化

    React 组件性能优化最佳实践 React 组件性能优化的核心是减少渲染真实 DOM 节点的频率,减少 Virt...

  • React Ajax最佳实践

    当你开始询问关于React和AJAX的一些东西时,专家们首先就会告诉你React只是一个View层的库,它并没有网...

  • React Native最佳实践

    感觉自己有点狂,居然敢在自己的文章中说这是最佳实践。不过有人不是说了吗,牛皮还是要吹的,万一实现了呢? 接下来公司...

  • react学习文档

    通过实例,学习编写 React 组件的“最佳实践”https://zhuanlan.zhihu.com/p/278...

  • React+Redux工程目录结构,最佳实践

    参考 Redux进阶系列1: React+Redux项目结构最佳实践 《深入浅出React和Redux》一书的第四...

  • dva抽出数组路由+配置动态路由+配置方法

    [TOC] 参考文章 React最佳实践系列 —— Dva 进阶之路由和动态加载 :https://blog.cs...

网友评论

  • zongzong678:```
    //判断属性是否在对象或者数组中(省去循环的代码)
    if('activeIndex' in props){
    //to do
    }
    ```
    这个我好像不行啊……

本文标题:react最佳实践

本文链接:https://www.haomeiwen.com/subject/hnlztxtx.html