react基础

react装包

用react要装react/react-dom包 终端输入命令如下:

npm install react react-dom --save

编译react

  • 首先准装包
     npm install --save-dev babel-preset-react
    
  • 第二步,修改 .babelrc 文件,为
    {
    "presets": ["es2015", "stage-0", "react"]
    }
    

JSX语法特点

  • 允许我们在js里直接去写标签
  • 每个标签必须都有结束标签
  • JSX元素(elements)必须包裹到封闭的标签内
  • 不可在JSX里写注释,如果写要写{/* */}
  • 可以在JSX元素内嵌入变量{obg}
  • 标签内class要写为className,tabindex为tabIndex,for写为htmlFor
  • 变量可以定义在任何位置
  • JSX语法会被编译,通过React,createElement()这个方法
  • 组件(component)块开发,有三种方式,创建组件要首字母大写

组件式开发

组件开发有三种方式

第一种,es5语法写

let Dom = React.createClass({
  render: function(){
    return <h1>信息表</h1>;
  }
});

ReactDom.render(
  <Dom />
  ,document.getElementById('app')
)

第二种

function Dom(){
return <h1>hello<h1/>
}

ReactDom.render(
  <Dom />
  ,document.getElementById('app')
)

第三种

class Hello extends ReactDom.Component{
  render(){
    return(
      <div> </div>
      )
  }
}

react内部样式

react内部样式有两种方法:

  • 第一种,代码如下
    class Logo extends React.Component{
    render(){
      return(
        <div style=>
          <span className="logo" >Project Name</span>
        </div>
      )
    }
    }
    
  • 第二种,代码如下
    class Logo extends React.Component{
     render(){
       let style={display: 'block',width: '540px',float: 'left',marginLeft: '362px'}
      return(
        <div>
          <img src={img} className='img' style={style}/>
        </div>
      )
    }
    }
    

    react外部样式

首先在src里创建main.css文件,然后需要下载包,style-loader,css-loader,之后在配置文件里配置包

外部样式代码如下:

class SignIn extends React.Component{
  render(){
    return(
      <div>
        <input className='btn' type='button' value='Sign in' />
        <input  className='inp' type='text' placeholder='aaa' />
        <input className='inp' type='text' placeholder='bbbb' />

      </div>
    )
  }
}

组件嵌套式布局

SignIn.js

import React from 'react';

class SignIn extends React.Component{
  render(){
    return(
      <div>
        <input className='btn' type='button' value='Sign in' />
        <input  className='inp' type='text' placeholder='aaa' />
        <input className='inp' type='text' placeholder='bbbb' />

      </div>
    )
  }
}
export default SignIn;

logo.js

import React from 'react';
import img from './images/coder'

class Logo extends React.Component{
  render(){
    return(
      <div style=>
        <span className="logo" >Project Name</span>
      </div>
    )
  }
}

export default Logo;

Header.js

import React from 'react';
import Logo from './Logo';
import SignIn from './SignIn';

class Header extends React.Component{
  render(){
      return(
        <div>
          <Logo />
          <SignIn />
        </div>
      )
  }
}

export default Header;

下载加载包

css样式加载需要下载包,命令如下:

npm install --save-dev style-loader css-loader

加载文件需下载包,命令如下:

npm install --save-dev file-loader