React基础使用

React

1、认识react

1.1、基础介绍

1.2、中文官网地址:

https://react. docschina.org/

2、react基础使用

2.1、引入文件

// react核心库
<script  src="https://unpkg.com/react@16/umd/react.development.js"></script>
// reactDOM 库
<script  src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
// babel
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

2.2、一个容器元素

<div id="root"></div>

2.3、初始化

// 设置type属性为text/babel 识别jsx语法
<script type="text/babel">
  	
 
  // 核心方法: ReactDOM.render(模板,挂载的节点);
  
  let template = (<div>
                  		<h3>我是标题</h3>
                  </div>)
  ReactDOM.render(template,document.querySelector('#root'));
  
</script>

3、JSX语法

3.1、渲染变量

格式: {变量}
// 设置type属性为text/babel 识别jsx语法
<script type="text/babel">
  
  // 定义好变量
  let msg = "老子天地之间第一帅!"
  
 
  // 核心方法: ReactDOM.render(模板,挂载的节点);
  
  let template = (<div>
                  		<h3>{msg}</h3>
                  </div>)
  ReactDOM.render(template,document.querySelector('#root'));
  
</script>

注意:

  • 不可以直接渲染对象变量

  • 渲染数组,会直接将每个值变成字符串放在一起

  • {}括号内部,想js一样可以进行运算。类似 {1+1} {‘a’+‘b’}

  • 不会对运算的结果是布尔值进行返回 比如: {10>20} 如果是Vue返回false,React中不会任何返回信息,但是对于三木运算,会有返回结果

3.2、模板注意语法

- 所有标签必须闭合,无论单双,特别注意单标签,如img,br,hr,input
- 注释写法:  {/* 注释内容 */}
- HTML标签的某些属性更换了名称 如: class 换成了className;  label的for换成了 htmlFor
- HTML标签的属性,需要驼峰命名。 如:onclick 变成  onClick ,   rowspan 变成 rowSpan
  • 组件的首字母必须大写

3.3、属性绑定

格式: 
		<标签 属性名={变量名} />
		<标签 属性名={ '字符串'+变量名} />
// 切记:不需要双引号

3.4、条件渲染

  • 做法:和传统的html判断非常类似,通过if语句决定变量的不同值。

  • 实现:

    // 设置type属性为text/babel 识别jsx语法
    <script type="text/babel">
      
      // 定义好变量
      let state =true
    
      let htmlstr = "";
    	
    	 // 适用于大段的html内容
       if(state){
          htmlstr = (
          	<div class='aa'>
            	<h1>我是对的哦</h1>
            </div>
          )
       }else{
         htmlstr = (
          	<div class='aa'>
            	<h1>我是错的哦</h1>
            </div>
          )
       }
    
      
      // 核心方法: ReactDOM.render(模板,挂载的节点);
      
      let template = (<div>
                      		<h3>标题啊</h3>
                      		{htmlstr}
                      </div>)
      ReactDOM.render(template,document.querySelector('#root'));
      
    </script>
    

    比较小的html内容更换,使用三木判断

    // 设置type属性为text/babel 识别jsx语法
    <script type="text/babel">
      
      // 定义好变量
      let state =true
    
      let htmlstr = "";
    	
    	 
      
      // 核心方法: ReactDOM.render(模板,挂载的节点);
      
      let template = (<div>
                      		<h3>标题啊</h3>
                      		<div>
                      				{ state ? <h3>对的</h3> : <h3>错的</h3> }
                      		</div>
                      </div>)
      ReactDOM.render(template,document.querySelector('#root'));
      
    </script>
    

3.5、循环渲染

  • 本质:抓住了,渲染数组的时候会将数组的每个值直接放入到模板中。

    • 我们将数组中的每个值变成html,然后将数组直接丢入去渲染,会直接渲染这些HTML
  • 实现:

    <script type="text/babel">
    
        // 数据   
        let arr = [3,545,6,7,3,2]
    		// 每个元素可以使HTML, 但是每个HTML需要有一个key值
        let arr2= [<h3 key="1">3333</h3>,<p key="2">555555</p>,<h4 key="3">ggggggg</h4>]
       
        // 渲染数组:
                // 直接渲染数组的话,会吧每个值拿出来变成字符串放在一起,逗号都没有,如果是HTML标签,那么直接渲染。
    
        let domstr =(
           <div>
                <div>{arr}</div>
                <div>{arr2}</div>
           </div>
        )
        ReactDOM.render(domstr,document.querySelector("#app"))
    
    </script>
    

    可以对数据进行加工展示:

    <script type="text/babel">
    
        // 数据
        let arr3 = [
            {name:"张飞",age:210},
            {name:"张飞22",age:220},
            {name:"张飞33",age:2320},
        ]
    
        // 循环生成我们的 react 节点元素 数组  
        // let arr4 = [];
        // arr4 = arr3.map((val,idx)=>{
        //     return (
                // <li key={idx}>
                //     <h3>{val.name}</h3>
                //     <p>{val.age}</p>
                //     <hr/>
                // </li>
        //     )
        // })
        // console.log(arr4);
        
    
    
        // 渲染数组:
                // 直接渲染数组的话,会吧每个值拿出来变成字符串放在一起,逗号都没有
    
        let domstr =(
           <div>
               	{/*剥离写法:外面生成号,这里直接渲染数组*/}
                {/*
                <ul>
                    {arr4}
                </ul>
                 */}
          
        				{/*内嵌直接渲染写法: 直接内部循环返回*/}
                <ul>
                    { 
                        arr3.map((val,idx)=>{
                            return (
                                <li key={idx}>
                                    <h3>{val.name}</h3>
                                    <p>{val.age}</p>
                                    <hr/>
                                </li>
                            )
                        }) 
                    }
                </ul> 
           </div>
        )
        ReactDOM.render(domstr,document.querySelector("#app"))
    
    </script>
    

3.6、样式操作

  • class操作

    • 和属性绑定一致
    • 注意: class属性变成className
  • style操作

    • 注意: style属性不接收字符串样式

          // 错误
          // let domstr =(
          //     <div>
          //         <h3 style="color:red;font-size:20">你好</h3>
          //     </div>
          // )
      
    • style接收一个样式对象 style={ 样式对象 }

      <script type="text/babel">
         
          let styleobj = {color:"red",fontSize:"40px",border:"2px solid orange"};
          let domstr =(
              <div>
            			{/* 直白写法 */}
                  {/*<h3 style={ {color:"red",fontSize:"40px",border:"2px solid orange"} }>你好</h3>*/}
          				{/* 剥离简写写法 */}
                  <h3 style={ styleobj }>你好</h3>
              </div>
          )
      
          
          ReactDOM.render(domstr,document.querySelector("#app"))
      
      </script>
      

4、组件的创建

4.1、函数式创建

//要是构造函数
function Banner(){
		return (
			<div>我是div啊</div>
		)
}
// 简写:
let Banner =()=>(
			<div>我是div啊</div>
		)

4.2、class创建

// class类创建,主要继承React里面Component类
class Banner extends React.Component{
     render(){  // 渲染
          return ( 
            <div>我是div啊</div>
          )
     }
}

4.3、组件调用

// 引入组件
import 组件名 from "组件地址"

模板内部通过:
		<组件名/>

5、脚手架

  • 网址:https://www.html.cn/create-react-app/docs/getting-started/
  • 英文网址:https://create-react-app.dev/

5.1、全局安装脚手架

// 1、node环境安装了

// 2、npm安装脚手架
		npm install create-react-app -g   //全局安装

5.2、初始化项目

// 1、找到项目想存放的目录,进入该目录的cmd
// 2、初始化项目
		create-react-app 项目名称

5.3、目录结构介绍

my-app
├── README.md  // 说明文件 
├── node_modules  // 包文件
├── package.json  // 包配置文件
├── .gitignore  // git忽略文件
├── public
│   ├── favicon.ico    // 网页图标
│   ├── index.html     // 单页面文件
│   └── manifest.json  // 缓存
└── src   // 开发目录
    ├── App.css   // 根样式,看情况
    ├── App.js    // 根组件  【重要】
    ├── App.test.js  // 无用
    ├── index.css  // 全局样式,看情况
    ├── index.js   // 【非常重要】  【入口文件】
    ├── logo.svg   // logo文件,无用
    └── serviceWorker.js  // 服务注册文件,无用
//index.js

import React from React;
import ReactDOM from ReactDOM;

// 引入根组件
import App from "./APP.js";

// 渲染
ReactDOM.render(<App/>,document.querySelector("#root"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值