zoukankan      html  css  js  c++  java
  • React-菜鸟学习笔记(二)

    这篇新颖的东西是React的组件的封装和引用

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <title>Hello React!</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
    </head>
    <body>
    
    <div id="example"></div>
    <script type="text/babel">
     
     /*jsx允许在模板中插入数组,数组会自动展开所有成员*/
    /**
    var arr = [
                <h1>白</h1>,
                <h1>富</h1>,
                <h1>美</h1>,
                <h1>甜</h1>
                ];
    var element = (
        
         <div>  
             <h1>Hello, world! </h1>
             {arr}
         </div>
     
    )
     
    ReactDOM.render(
      element,
      document.getElementById('example')
    );
    */
     
     
      
    
    /* React组件 封装一个输出为‘hello world’的React组件,组件名为HelloMessage*/
    /*Tips: 原生HTML元素名以小写字母开头,而自定义的React类名以大写字母开头。组建类只能包含一个顶层标签 return <div><h1>hello world</h1><div/> 是错的*/
    /*方法1 使用函数定义一个组件  方法2 使用ES6 class定义一个组件*/
    
    /**
    function HelloMessage(props){
        return <h1>hello world: {props.name}</h1>
    }
    
    class Welcome extends React.Component{
        render(){
            return <h1>welcome slowcity</h1>;         
        }
    
    }
    
    const element = <div>
                <HelloMessage name='superMan'/> 
                <Welcome />
                </div>
    
    ReactDOM.render(
      element,
      document.getElementById('example')
    );
    
    */
    /*复合组件  直白点就是封装组件*/
    /**
    function Name(props) {
        return <h1>网站名称:{props.name}</h1>;
    }
    function Url(props) {
        return <h1>网站地址:{props.url}</h1>;
    }
    function Nickname(props) {
        return <h1>网站小名:{props.nickname}</h1>;
    }
    function App() {
        return (
        <div>
            <Name name="造梦工场" />
            <Url url="https://www.cnblogs.com/" />
            <Nickname nickname="Slowcity" />
        </div>
        );
    }
    
    const element =( <App />)
    ReactDOM.render(
        element,
        document.getElementById('example')
    );
    
    */
    /*将生命周期方法添加到类中  挂载和卸载*/
    
    /*
    Tips:
    ()=>this.tick() 是 ES6 中声明函数的一种方式,叫做箭头函数表达式,引入箭头函数有两个方面的作用:更简短的函数并且不绑定 this。
    
    var f = ([参数]) => 表达式(单一)
    // 等价于以下写法
    var f = function([参数]){
       return 表达式;
    }
    箭头函数的基本语法:
    (参数1, 参数2, …, 参数N) => { 函数声明 }
    (参数1, 参数2, …, 参数N) => 表达式(单一)
    //相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
    
    // 当只有一个参数时,圆括号是可选的:
    (单一参数) => {函数声明}
    单一参数 => {函数声明}
    
    // 没有参数的函数应该写成一对圆括号。
    () => {函数声明}
    
    */
    
    class Clock extends React.Component {
      constructor(props) {
        super(props);
        this.state = {date: new Date()};
      } 
      //添加定时器  生命周期钩子 当 Clock 的输出插入到 DOM 中时,React 调用 componentDidMount() 生命周期钩子
      componentDidMount(){
        this.timerID = setInterval(
            () => this.tick(),1000
        );
      }
      //移除定时器 一旦 Clock 组件被从 DOM 中移除,React 会调用 componentWillUnmount() 这个钩子函数
      componentWillUnmount(){
        clearInterval(this.timerID);
      }
      
      tick(){
        this.setState({
            date:new Date()
        });
      
      }
     
      render() {
        return (
          <div>
            <h1>Hello, world!</h1>
            <FormattedDate date={this.state.date}/>
            <h2>hello{this.props.name} 现在是 {this.state.date.toLocaleTimeString()}.</h2>
          </div>
        );
      }
    }
    
    Clock.defaultProps={
        name:"慢城"
    }
    function FormattedDate(props) {
      return <h2>现在是 {props.date.toLocaleTimeString()}.</h2>;
    }
    
    ReactDOM.render(
      <Clock />,
      document.getElementById('example')
    );
    
    
    
    
    </script>
    
    </body>
    </html>
  • 相关阅读:
    Python有用的内置函数divmod,id,sorted,enumerate,input,oct,eval,exec,isinstance,ord,chr,filter,vars,zip
    audio的自动播放报错解决
    高德搜索定位,获取信息
    柱状图的点击事件
    高德局部刷新标记点,bug解决
    递归
    CentOS7搭建LNMP环境
    CentOS7安装RabbitMQ
    前端项目代码加密教程
    复杂度分析
  • 原文地址:https://www.cnblogs.com/slowcity/p/10210117.html
Copyright © 2011-2022 走看看