约束组件和非约束组件

一、非约束性组件

针对<input>输入框这种类型,你可以通过这种方式来实现(其中defaultValue就是原生DOM中的value属性。

<input type="text" defaultValue="a" ref="input"/>

获取输入框的值的时候,需要这样做——即通过查询DOM,获取DOM属性的方式来做。

var input = this.refs.input 
console.log(input.value)

这样做,和jquery的做法一样,都是围绕着DOM来做的。缺点有两个:

  • 依赖DOM操作,不符合组件化的设计,也不易扩展
  • 查询DOM消耗更多性能。
二、约束性组件

比较推荐的方式是这一种。即监控<input>的变化,将值实时保存到state中,直接从state中获取值。

<input type="text" value={this.state.name} onChange={this.handleChange} /> 
 //...省略部分代码 
handleChange: function(e) { 
    this.setState({
        name: e.target.value
    });
}

<b>React或者Vue都是一种基于数据驱动视图的设计方式,定好数据和视图的规则之后,只更改数据,不直接操作DOM。操作DOM的事情,交给React或者Vue这个框架的代码来搞定。</b>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,018评论 25 708
  • 静看, 忘却, 谁懂, 独行, 影.... 无人, 那年的殇, 是否还留... 让我一人, 殇!
    陌颜兮阅读 166评论 1 1
  • 很多女生进入职场后发现自己平常的“穿搭经”似乎派不上用场了。过于轻松可爱的装扮使女生们与职场的氛围显得格格不入。而...
    穿搭日记阅读 4,062评论 0 8
  • 先来一篇基金基础概念。 根据组织形式不同——契约型基金与公司型基金; 根据运作方式不同——封闭式基金和开放式基金;...
    肥肥的大饼脸Lillian阅读 156评论 0 0