[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,否则不能编辑

非受控可自由编辑

相关推荐

  1. react组件组件区别

    2024-04-14 00:06:01       53 阅读
  2. React组件组件区别及应用场景。

    2024-04-14 00:06:01       43 阅读
  3. React 表单、处理表单组件组件

    2024-04-14 00:06:01       45 阅读
  4. React中的组件组件

    2024-04-14 00:06:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 00:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 00:06:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 00:06:01       82 阅读
  4. Python语言-面向对象

    2024-04-14 00:06:01       91 阅读

热门阅读

  1. Android Camera预览通道

    2024-04-14 00:06:01       33 阅读
  2. 什么样的数据分析才是有用的?

    2024-04-14 00:06:01       36 阅读
  3. 网络安全工程师必知的100+文件类型

    2024-04-14 00:06:01       28 阅读
  4. jquery 实现倒计时

    2024-04-14 00:06:01       40 阅读