初识react

143 阅读2分钟

今天学习了react,哇咔咔,激动ing

下面带大家来一起认识下react吧!

我们在写react的时候要先引用三个文件分别是

可以通过 以下命令安装

npm install react
npm install react-dom
npm install babel-standalone

写一个react页面分为三步:

1 定义一个虚拟容器存放dom

<div id="my"></div>

2.创建虚拟DOM

var str = React.createElement('div',{className:'div-a'},'123');

3.虚拟DOM渲染,渲染的方式有多种

1.通过react渲染元素

ReactDOM.render(
          str,
          document.getElementById("my")
        )

2.通过JSX渲染元素 

ReactDOM.render(
          <ul>
            <li>11</li>
            <li>22</li>
          </ul>,
          document.getElementById("my")
        );


3.通过JSX渲染元素 (第二种)

var a = true;
        var div = <div className="a">{a?'aaaa':'wwww'}</div>
        ReactDOM.render(
          div,
          document.getElementById("my")
        );

不过上面的写法太麻烦了,我们一般都用组件来写,那么组件的方法是怎么写的呢?

使用ES6 class 来定义一个组件,然后把它给渲染进去 

注:需要注意的是render 里面只能有一个根元素,所以我们要给组件外层在加一个div

 

class Hello extends React.Component{
          render(){
            return <h1>hello组件</h1>
          }
        };
        ReactDOM.render(
          <div>
            <Hello></Hello>
          </div>,
          document.getElementById("my")
        ); 

提示:在写<script type="text/babel"></script> 一定要加上type="text/babel",否则解析不了

ok 今天就到这里了,是不是感觉敲简单呢?接下来我会为大家分享一个小例子,这是一个很简单的切换的小例子哦,欢迎指正!

html

<div id="my"></div>

 

js

 

<script type="text/babel">
    window.onload = function(){
        /*组件*/
         /*定义按钮1*/
        class OneList extends React.Component{
          render(){
            return (
              <div>
                <p>11111</p>
                <p>11111</p>
                <p>11111</p>
                <p>11111</p>
              </div>
            )
          }
         };
         /*定义按钮2*/
        class TwoList extends React.Component{
          render(){
            return (
              <ul>
                <li>22222</li>
                <li>22222</li>
                <li>22222</li>
                <li>22222</li>
              </ul>
            )
          }
         };
        /*定义标题*/
        class TabList extends React.Component{
          constructor() {
            super();       //关键字   父类/子类继承的一种方式,在此处我们并没有用到,也可以不写
            this.state = {  //修改setState
              flag:false
            }   
          };
          btnChange(type){
            if(type=='1'){
              this.setState({flag:true})
            }else {
              this.setState({flag:false})
            }
          };
         
          render(){
            var flag = this.state.flag;
            return (
              <div>
                <ul className="list-ul">
                  <li className={flag ? 'active':''} onClick={()=>this.btnChange('1')}>按钮1</li>
                  <li className={!flag ? 'active':''} onClick={()=>this.btnChange('2')}>按钮2</li>
                </ul>
                <div>
                  {flag ? <OneList /> : <TwoList /> }
                </div>
              </div>
            )
          }
        };
        ReactDOM.render(
          <TabList />,
          document.getElementById("my")
        );
    }

    </script>