「React源码分析」十. React DOM之textarea组件操作分析

2021SC@SDUSC

ReactDOM textarea组件操作源码分析

input组件类似,ReactDOM实现了可控的<textarea>组件,允许设置valuedefaultValue属性。但这与传统的DOM API不同,传统DOM API中textarea的值被设置为PCDATA中的子元素。
与ReactDOM对input组件封装的操作类似,如果value属性没有提供(或为null/undefined),用户改变所选选项的行为只会触发<textarea>组件自身的更新,更新渲染所输入的内容。反之如果指定了value属性,那么它将成为一个受控组件,用户的输入操作不会再触发<textarea>组件自身的更新,而需要用户自己在父组件中控制value的值,改变传入的props来造成<textarea>的更新。

相关源码在packages\react-dom\src\client\ReactDOMTextarea.js中定义。

initWrapperState

export function initWrapperState(element: Element, props: Object) {
   
  const node = ((element: any): TextAreaWithWrapperState);
  if (__DEV__) {
   
    checkControlledValueProps('textarea', props);
    if (
      props.value !== undefined &&
      props.defaultValue !== undefined &&
      !didWarnValDefaultVal
    ) {
   
      console.error(
        '%s contains a textarea with both value and defaultValue props. ' +
          'Textarea elements must be either controlled or uncontrolled ' +
          '(specify either the value prop, or the defaultValue prop, but not '</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值