美文网首页
react 简要心得

react 简要心得

作者: 小明_4f28 | 来源:发表于2018-03-02 09:25 被阅读0次

    1.JSX要加小括号()

    如果存在子元素,则就像在HTML中那样直接包裹在父元素中即可(注意换行的JSX要加小括号()).

    const element = (

    <div>

    <span>hello</span>

    <p>world</p>

    </div>
    )


    2.原则

    注意我们将定时器存储在了组件实例上,而不是state中,请先记住一个原则:任何没有在组件的render()函数中使用的变量,都不应该存放在state中。

    深度剖析:如何实现一个 Virtual DOM 算法


    3.生命周期小结

    当把组件传递给ReactDOM.render()函数后,React会调用组件的构造函数constructor,进行一些初始化

    然后React会去调用Clock组件的render()方法将组件渲染出来

    当组件渲染完毕后,React会调用componentDidMount()生命周期钩子函数

    当setState()函数被调用时,React会重新调用组件的render()方法进行重绘

    当组件被从DOM中移除时,React会调用componentWillUnmount()生命周期钩子函数



    4.表达式{}的写法

    你可以传递一个字符串作为道具。这两个JSX表达式是等价的。

    <Coustom message="aaa">  ==    <Coustom message={"aaa"}>

    5.细节记录

    (1):以前一个组件是通过继承 Component 来构建,一个子类就是一个组件。而用函数式的组件编写方式是一个函数就是一个组件,你可以和以前一样通过  使用该组件。不同的是,函数式组件只能接受 props 而无法像跟类组件一样可以在 constructor 里面初始化 state。你可以理解函数式组件就是一种只能接受 props和提供 render 方法的类组件。

    (2):state 是让组件控制自己的状态,props 是让外部对组件自己进行配置

    (3):props 一旦传入,你就不可以在组件内部对它进行修改。但是你可以通过父组件主动重新渲染的方式来传入新的 props,从而达到更新的效果。

    (4):文件名的开头是大写字母。我们遵循一个原则:如果一个文件导出的是一个类,那么这个文件名就用大写开头。四个组件类文件导出都是类,所以都是大写字母开头。

    (5): PropTypes.object.isRequired。

    PropTypes.array

    PropTypes.bool

    PropTypes.func

    PropTypes.number

    PropTypes.object

    PropTypes.string

    (6):context 打破了组件和组件之间通过 props 传递数据的规范,极大地增强了组件之间的耦合性。而且,就如全局变量一样,context 里面的数据能被随意接触就能被随意修改,每个组件都能够改 context 里面的内容会导致程序的运行不可预料。

    6.key的理解

    c 和 b 的位置互换了。但其实 React.js 只需要交换一下 DOM 位置就行了,但是它并不知道其实我们只是改变了元素的位置,所以它会重新渲染后面两个元素(再执行 Virtual-DOM 策略),这样会大大增加 DOM 操作。但如果给每个元素加上唯一的标识,React.js 就可以知道这两个元素只是交换了位置。

    对于用表达式套数组罗列到页面上的元素,都要为每个元素加上 key 属性,这个 key 必须是每个元素唯一的标识。一般来说,key 的值可以直接后台数据返回的 id,因为后台的 id 都是唯一的。

    7.生命周期的理解

    (1):我们把 React.js 将组件渲染,并且构造 DOM 元素然后塞入页面的过程称为组件的挂载(这个定义请好好记住)。其实 React.js 内部对待每个组件都有这么一个过程,也就是初始化组件 -> 挂载到页面上的过程。所以你可以理解一个组件的方法调用是这么一个过程;

    (2)

    -> constructor()

    -> componentWillMount()

    -> render()

    // 然后构造 DOM 元素插入页面

    -> componentDidMount()

    // ...

    // 即将从页面中删除

    -> componentWillUnmount()

    // 从页面中删除

    (3)总结:

    我们一般会把组件的 state 的初始化工作放在 constructor 里面去做;在 componentWillMount 进行组件的启动工作,例如 Ajax 数据拉取、定时器的启动;组件从页面上销毁的时候,有时候需要一些数据的清理,例如定时器的清理,就会放在 componentWillUnmount 里面去做。

    8.ref的使用

    <Clokc ref = {(clock)=>this.clock = clock} />

    9.属性写法注意事项

    class  写成 className

    style={{color:'red'}}

    相关文章

      网友评论

          本文标题:react 简要心得

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