zoukankan      html  css  js  c++  java
  • [React] Make Controlled React Components with Control Props

    Sometimes users of your component want to have more control over what the internal state is. In this lesson we'll learn how to allow users to control some of our component’s state just like the <input />'s value prop.

    Controlled props is the prop that component let user fully control.

    import React from 'react';
    
    class Toggle extends React.Component {
    
        // An empty function
        static defaultProps = {
            defaultOn: false,
            onToggle: () => {
            }
        };
    
        // default state value
        initialState = {on: this.props.defaultOn};
        state = this.initialState;
    
        isControlled() {
            return this.props.on !== undefined;
        }
    
        // toggle method
        toggle = () =>{
          if (this.isControlled()) {
            this.props.onToggle(!this.props.on)
          } else {
              this.setState(
                  ({on}) => ({on: !on}),
                  () => {
                      this.props.onToggle(this.state.on)
                  }
              );
          }
        };
    
    
        reset = () => this.setState(
            this.initialState
        );
    
        render() {
            return this.props.render({
                on: this.isControlled() ?
                        this.props.on :
                        this.state.on,
                toggle: this.toggle,
                reset: this.reset,
                getProps: (props) => {
                    return {
                        'aria-expanded': this.state.on,
                        role: 'button',
                        ...props
                    };
                }
            });
        }
    }
    
    export default Toggle;
  • 相关阅读:
    Python2 和 Python3的区别 更新中
    CentOS下图形界面安装_Orcaale 11g
    Nmap_使用介绍
    shell_innobackup增量备份步骤
    shell_跳板机推送公钥
    shell_clean_log
    shell_xtrabackup_backup_mysql
    gitlab免密登录
    gitlab安装与部署
    git合并分支
  • 原文地址:https://www.cnblogs.com/Answer1215/p/8041059.html
Copyright © 2011-2022 走看看