[react] 受控组件和非受控组件

什么是受控?

就是比如一个文本框,你可以随便输入就是受控,他收到状态的影响

    <div className="App"  >
      受控<input value={name}></input><br />
      非受控<input defaultValue={name}></input>
    </div >

你想强行改?浏览器报错!

改成双向绑定就可了

  受控<input value={name} onChange={(e) => { setName(e.target.value) }}></input><br />

 受控有啥用?因为受到我控制,我可以让他输入变为大10倍输出,当然我这例子没有意义,你可以做别的操作

function App() {
  const [num, setNum] = useState(1);


  return (
    <div className="App"  >
      受控<input type="number" value={num} onChange={(e) => { setNum(parseInt(e.target.value) * 10) }}></input><br />
      非受控<input defaultValue={num}></input>
      <div>输出的是 {num}</div>
    </div >
  );
}

怎么获取两个组件的值?

1受控就直接打印state

2.非受控获取ref

function App() {
  const [num, setNum] = useState(11);
  const fsk = useRef<HTMLInputElement>(null)

  return (
    <div className="App"  >
      受控<input type="number" value={num} onChange={(e) => { setNum(parseInt(e.target.value) * 10) }}></input><br />
      非受控<input ref={fsk} defaultValue={num}></input>
      <button onClick={() => {
        console.log('输出的是受控组件是', num);
        console.log('输出的是非受控组件是', fsk.current?.value);
      }}>打印结果</button>
    </div >
  );
}

总结

受控就是受到state影响,除非你用onchange,否则不能编辑

非受控可自由编辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值