defaultValue in React

overview

在React中,提供了受控和非受控两种方式来操作input的value,提供非受控方式的意义在于提供了一个能直接操作底层DOM的接口,那么React提供defaultValue的意义是什么呢

sense of defaultValue

我们知道defaultValue是用来设置非受控input的默认值,那么我们先来思考,没有defaultValue这个API,我们要如何实现给非受控的input设置默认值

set default value for uncontrol input

我们要设置非受控input的值,那么就需要操作DOM,就需要在组件挂载到DOM的时候才能去操作,也就是在lifecyclecomponentDIdMount中来操作

class MyComponent extends Component {
    componentDidMount() {
        this.input.value = 'default value'
    }
    render() {
        return <input ref={input => this.input = input} />
    }
}

CONS

其实就是操作了一次DOM,如果能在组件挂载到DOM之前就设置好value就能避免了一次DOM的操作

const inputElement = document.createElement('input')
inputElement.setAttribute('value', 'hello')
document.body.appendChild(inputElement)

conclusion

所以React之所以提供defaultValue这个API,一方面是提供便利的API让开发者避免去手动设置,避免模版代码,另一方面,在挂载到DOM之前就设置好input的值也能减少一次DOM的操作提高性能

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

推荐阅读更多精彩内容

  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,858评论 1 18
  • It's a common pattern in React to wrap a component in an ...
    jplyue阅读 3,295评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 剩者为王里有一段话这样说,“其实可以倒着想吧,有的人不喝牛奶,有的人不吃淀粉 ,有的人不穿皮草,就会有人不谈恋爱啊...
    木安m阅读 391评论 2 10
  • 福州的冬天, 总是有雨的光临, 于是每条街道都美的很朦胧。 雨是凌厉的,空气是无声的。 但好,福州的风比惠安的温柔...
    心有偏颇阅读 180评论 0 1