zoukankan      html  css  js  c++  java
  • react

    React 是一个声明式 高效灵活的用于构建用户界面的 JavaScript 库 用 react 组件可以拼出复杂的 UI 界面

    render 返回值描述的是希望在界面上看到的内容 返回的是一个 react 元素

    constructor 要定义 state 的时候必须用到 constructor 

    super 如果要在子类中调用父类的属性就要调 super 

    SELECT

    class FlavorForm extends React.Component {
      constructor(props) {
        super(props);
        this.state = {value: '请选择'};
        
        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
      }
      handleChange(event) {
        this.setState({value: event.target.value});
      }
      handleSubmit(event) {
        alert('your choice is' + this.state.value);
        event.preventDefault();
      }
      render() {
        return (
          <form onSubmit={this.handleSubmit}>
            <label>
              Pickkkk
              <select value = {this.state.value} onChange={this.handleChange}>
                <option value="请选择">请选择</option>
                <option value="grapefruit">grapfruit</option>
                <option value="lime">lime</option>
                <option value="mango">mango</option>
              </select>
            </label>
            <input type="submit" value="Sub" />
          </form>
        );
      }
    }
    
    ReactDOM.render(
      <FlavorForm />,
      document.getElementById('root')
    );
    

      

     INPUT

    class NameForm extends React.Component {
      constructor(props) {
        super(props);
        this.state = {value: ''};
    
        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
      }
    
      handleChange(event) {
        this.setState({value: event.target.value});
      }
    
      handleSubmit(event) {
        alert('A name was submitted: ' + this.state.value);
        event.preventDefault();
      }
    
      render() {
        return (
          <form onSubmit={this.handleSubmit}>
            <label>
              Name:
              <input type="text" value ={this.state.value} onChange = {this.handleChange} />
            </label>
            <input type="submit" value="提交" />
          </form>
        );
      }
    }
    
    ReactDOM.render(
      <NameForm />,
      document.getElementById('root')
    );

     

    TEXTAREA

    class NameForm extends React.Component {
      constructor(props) {
        super(props);
        this.state = {value: ''};
    
        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
      }
    
      handleChange(event) {
        this.setState({value: event.target.value});
      }
    
      handleSubmit(event) {
        alert('A name was submitted: ' + this.state.value);
        event.preventDefault();
      }
    
      render() {
        return (
          <form onSubmit={this.handleSubmit}>
            <label>
              Name:
              <textarea type="text" value ={this.state.value} onChange = {this.handleChange} />
            </label>
            <input type="submit" value="提交" />
          </form>
        );
      }
    }
    
    ReactDOM.render(
      <NameForm />,
      document.getElementById('root')
    );
    

    SELECT && INPUT

    class Reservation extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          isGoing: true,
          numberOfGuests: 233
        };
        this.fuc = this.fuc.bind(this);
      }
      
      fuc(event) {
        const target = event.target;
        const value = target.type === 'checkbox' ? target.checked : target.value;
        const name = target.name;
        
        this.setState({
          [name]: value
        });
      }
      render() {
        return (
          <form>
            <label>
              is going:
              <input
                name="isGoing"
                type="checkbox"
                checked={this.state.isGoing}
                onChange={this.fuc}/>
            </label>
            <br />
            <label>
              num:
              <input
                name= "numberOfGuests"
                type="number"
                value={this.state.numberOfGuests}
                onChange={this.fuc} />
            </label>
          </form>
        );
      }
    }
                
    ReactDOM.render(
      <Reservation />,
      document.getElementById('root')
    );
    

      

     状态提升

    const scaleNames ={
      c: 'Celsius',
      f: 'Fahrenheit'
    };
    
    function toCelsius(fahrenheit) {
      return (fahrenheit - 32) * 5 / 9;
    }
    
    function toFahrenheit(celsius) {
      return (celsius * 9 / 5) + 32;
    }
    
    function tryConvert(temperature, convert) {
      const input = parseFloat(temperature);
      if(Number.isNaN(input)) {
        return '';
      }
      const output = convert(input);
      const rounded = Math.round(output * 1000) / 1000;
      return rounded.toString();
    }
    
    function BoilingVerdict(props) {
      if(props.celsius >= 100) {
        return <p>!!!</p>;
      }
      return <p>???</p>;
    }
    
    class TemperatureInput extends React.Component {
      constructor(props) {
        super(props);
        this.fuc = this.fuc.bind(this);
      }
      fuc(e) {
        this.props.onTemperatureChange(e.target.value);
      }
      render() {
        const temperature = this.props.temperature;
        const scale = this.props.scale;
        return(
          <fieldset>
            <legend>{scaleNames[scale]}</legend>
            <input value={temperature} onChange = {this.fuc}/>
          </fieldset>
        );
      }
    }
    
    class Calculator extends React.Component {
      constructor(props) {
        super(props);
        this.Cel = this.Cel.bind(this);
        this.Fah = this.Fah.bind(this);
        this.state = {temperature: '', scale: 'c'};
      }
      Cel(temperature) {
        this.setState({scale: 'c', temperature});
      }
      Fah(temperature) {
        this.setState({scale: 'f', temperature});
      }
      render() {
        const scale = this.state.scale;
        const temperature = this.state.temperature;
        const celsius = scale === 'f' ? tryConvert(temperature, toCelsius) : temperature;
        const fahrenheit = scale === 'c' ? tryConvert(temperature, toFahrenheit) : temperature;
        
        return (
          <div>
            <TemperatureInput
              scale="c"
              temperature={celsius}
              onTemperatureChange={this.Cel} />
            <TemperatureInput
              scale="f"
              temperature={fahrenheit}
              onTemperatureChange={this.Fah} />
            <BoilingVerdict
              celsius={parseFloat(celsius)} />
          </div>
        );
      }
    }
    
    ReactDOM.render(
      <Calculator />,
      document.getElementById('root')
    );
    

      

  • 相关阅读:
    Redis数据类型和基本操作
    Redis持久化
    Redis安装
    MySQL5.7二进制包安装
    Django ORM多表操作
    Django中启用事务
    Django ORM单表操作
    MySQL事务
    用顺序栈实现十进制向二进制转化
    顺序栈
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/11793850.html
Copyright © 2011-2022 走看看