• React 学习(八) 受控组件和非受控组件


    Controlled & Uncontrolled Components

    Data is handle by a React Component ? Controlled : Uncontrolled

    • Controlled Components: The values in the components are always consistent with the state

      import React, { PureComponent } from "react";
      
      class App extends PureComponent {
        constructor() {
          super();
          this.state = {
            message: "DefaultText",
            counter: 5,
          };
        }
      
        changeHandle(e) {
          // console.log(e.target.value);
          this.setState({
            message: e.target.value,
          });
        }
      
        submitHandle(e) {
          e.preventDefault();
          console.log(this.state.message);
        }
      
        render() {
          const { message } = this.state;
          return (
            <>
              <div>message:{message}</div>
              <form
                onSubmit={(e) => {
                  this.submitHandle(e);
                }}
              >
                <label htmlFor="message">
                  <input
                    type="text"
                    onChange={(e) => {
                      this.changeHandle(e);
                    }}
                    value={message}
                  />
                </label>
                <input type="submit" />
              </form>
            </>
          );
        }
      }
      
      export default App;
      
      sequenceDiagram participant s as state participant c as components s->>c:DefaultValue loop One Way Data Flaw c->>c:ChangeValue c->>s:ChangeState s->>c:ChangeValue end
    • Uncontrolled Components

      import React, { createRef, PureComponent } from "react";
      
      export default class App extends PureComponent {
        constructor(props) {
          super();
      
          this.state = {
            username: "",
          };
      
          this.usernameRef = createRef();
        }
        render() {
          return (
            <div>
              <form
                onSubmit={(e) => {
                  this.handleSubmit(e);
                }}
              >
                <label htmlFor="username">
                  Username:{" "}
                  <input
                    type="text"
                    name="username"
                    id="username"
                    ref={this.usernameRef}
                  />
                </label>
      
                <input type="submit" value="submit" />
              </form>
            </div>
          );
        }
      
        handleSubmit(event) {
          event.preventDefault();
          console.log(this.usernameRef.current.value);
        }
      }
      
    每天进步一点点
  • 相关阅读:
    忆2011年的秋天:一个人的项目
    横看成岭侧成峰,远近高低各不同——从面试官的角度谈面试
    使用Scratch进行少儿编程
    初识少儿编程
    升级openssl
    CentOS设置虚拟网卡做NAT方式和Bridge方式桥接
    iptables conntrack有什么用
    nohup和&的区别
    Linux就这个范儿 第12章 一个网络一个世界
    一个由INode节点爆满引起的业务故障
  • 原文地址:https://www.cnblogs.com/smallstars/p/14074853.html
Copyright © 2020-2023  润新知