React小玩意儿

react是用来构建用户界面的JavaScript库

一、jsx语法

  1. 需要在{}写js表达式;
  2. 注释需要{/* 注释内容 */};
  3. className添加类名(代码展示如下)
// 样式写在App.css里
//引入css
import './App.css'
.active{
	color: #f70;
}
<h1 className='active'> 你好, react </h1>
  1. 样式对象自动展开(代码展示如下)
var styles = {
	fontSize : '48px',
	textAlign:'center',
	color:'green'
}
<p style={styles}>学好react,月薪过百万</p>
  1. 数组里面可以定义html标签,自动展开(代码展示如下)
//定义一个数组
var arr = [
	<h2>我是老大</h2>,
	<p>我就是个p标签</p>,
	<a href='http://www.baidu.com'>百度一下</a>
]
{arr}
  1. 有且只有一个根节点
  2. html与js混合写法称为jsx
  3. jsx方便在js中嵌套heml模板,最终还是会被编译成js被浏览器识别

二、React的组件

1.函数组件

  1. 创建函数组件(代码展示如下)
function App() {
	// 创建个App类
	return <div>
		</div>
}
export default App

2.类组件

  1. 创建类组件(代码展示如下)
import React, { Component } from 'react'
class App extends Component {
   constructor(props){
  super(props);
}
state = {num:5}
 render(){
return ( <div>
</div>);
}
}
export default App;

3.类组件与函数组件的区别

  1. 函数组件通常展示,类组件通常作为容器
  2. 类组件可以有state管理数据,函数组件没有state
  3. 函数组件没有this,类组件有this
  4. 函数组件没有生命周期,类组件没有生命周期

三、模板语法

1.文本渲染

  1. 普通写法(代码展示如下)
//{文本内容}
  1. html文本写法
var str2 = "我起飞咯"
<div dangerouslySetInnerHTML={{__html:str2}}></div>

2.条件渲染

var islog = true
{islog?<h3>来了老弟儿</h3>:<h3>出去吧</h3>}

3.列表渲染

var list = ["react","js","angular","jQuery"]
{
	list.map(item=>(<p key={item}>{item}</p>))
}

四、事件

  1. 和原生js事件一致,事件用驼峰式
  2. onclick~onClick onmouse~onMouse
  3. 事件总是要响应一个函数

事件响应

<h1 onClick={()=>{alert("abc)}}></h1>
//事件响应 箭头函数
doit = ()=>{"你好"}

<h1 onClick={this.doit}></h1>
//事件响应定义好得函数

事件传参

<p onClick={this.doit.bind(this,"河南")}>-传参</p>
<p onClick={()=>this.doit("是中国不可分割得一部分")}>统一-传参</p>

五、state

  1. react组件得状态/数据
  2. this.setState({k:新的值})
  3. 当state发生变化,引用state得视图会自动更新

表单的数据绑定

<input type='text' value={this.state.msg} onChange={this.updateMsg} />

updateMsg = e=>this.setState({msg:e.target.value})

六、组件

  1. 定义组件(代码展示如下)
src/components/Steper.js
// 组件要求首字母大写
  1. 导入组件
import Steper from './components/Steper'

stepr小实例

// 组件
import React, { Component } from 'react'
class Steper extends Component {
    constructor(props) {
        super(props);
		this.state={
			count:props.num
		}
    }
	updateCount =(e)=>{
		if(e.target.value*1>=1 && e.target.value*1<=9){
		this.setState({count:e.target.value})
		// 执行父组件的updateSize方法,从而更新
		this.props.updateSize(e.target.value)	
		}else{
			return
		}

	}
	min=()=>{
		if(this.state.count*1-1>=1){
			this.setState({count:this.state.count*1-1})
			this.props.updateSize(this.state.count*1-1)
		}
		return
	}
	add=()=>{
		if(this.state.count*1+1<=9){
		    this.setState({count:this.state.count*1+1})
		    this.props.updateSize(this.state.count*1+1);
		}
		return ;
	}
	
    render() { 
        return ( <span>
			<button onClick={this.min}>-</button>
			<input 
			type="text" 
			 onChange={this.updateCount}
			value={this.state.count} 
			 />
			<button onClick={this.add}>+</button>
		</span> );
    }
}
 Steper.defaultProps = {
	 num:1
 }
export default Steper;
// App.js
import React, { Component } from 'react'
// 导入组件
import Steper from './components/Steper'
class App extends Component {
    // constructor(props) {
    //     super(props);
    // }
    state = { 
		msg:'',
		size:100
	}
	// 父组件定义一个size的方法
	updateSize = n=>this.setState({size:n})
	// 用箭头函数保障this正确性
	// 事件对象input 对象对应的值
	// updateMsg = e=>this.setState({msg:e.target.value})
    render() { 
        return ( <div>
			{/*<h1>表单数据得绑定</h1>
			<p>{this.state.msg} 把方法通过props方式传递给了子组件👇</p>
			<input type='text' value={this.state.msg} onChange={this.updateMsg} />*/}
			<Steper num={this.state.size} updateSize={this.updateSize}></Steper><br/>
			<Steper num={10}></Steper><br/>
			<Steper></Steper>
			<div style={{border:"1px solid red",width:this.state.size+"px",height:this.state.size+"px"}}>
			{this.state.size}
			</div>
		 </div> );
    }
}
 
export default App;

七、参数传参

父传子

//父组件传递
<Steper num={5}></Steper>
//子组件接受
props.num

默认参

 Steper.defaultProps = {
	 num:1
 }

子传父,执行父组件得传递过来得props回调函数,子传父:执行回调函数

//父组件
//定义函数并把函数传递给子组件
updateSize = n=>this.setState({size:n})
<Steper num={this.state.size} updateSize={this.updateSize}></Steper>
//子组件
//执行
props.updateSize()
//相当于执行父组件的updateSize方法

传参小图解

传参小图

八、组件的设计

1.容器组件

  1. 一个页面,一个容器组件
  2. 有state,处理state方法
  3. 类组件

2.视图组件

  1. 显示内容,一个视图组件
  2. 只有props没有state
  3. 函数组件

九、DOM引用

  1. 创建dom引用的方法
import createRef from 'react'
  1. 创建dom引用
var inp = createRef()
  1. 引用
<p ref={}></p>ref
  1. 获取值
inp.current.value'
//inp.current当前引用的dom节点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue、React和小程序是三种热门的前端开发技术,它们在不同的场景下有着不同的应用和特点。 首先,Vue是一个渐进式JavaScript框架,它具有易上手、灵活和高效的特点。Vue使用基于组件的开发方式,将界面划分为多个独立的组件,每个组件都有自己的逻辑和模板。Vue支持声明式的模板语法,可以方便地编写简洁清晰的代码。此外,Vue还提供了响应式的数据绑定和虚拟DOM技术,使得页面渲染和数据更新的效率较高。Vue也有丰富的生态系统和文档,使得学习和使用变得更加容易。 而React是由Facebook开发的一个用于构建用户界面的JavaScript库,它着重于UI组件的构建和管理。React采用了组件化的思想,将界面划分为多个独立的组件,每个组件都有自己的状态和属性。React使用JSX语法,将HTML和JavaScript混写在一起,使得开发者可以直观地描述用户界面。React采用虚拟DOM技术,通过差异化更新来提高性能。React同时还可以通过React Native来开发移动应用,一次编码可同时适用于iOS和Android平台。 小程序是一种轻量级的应用类型,可在微信、支付宝等平台上运行。小程序有自己的生命周期、页面和组件,但相比于Vue和React,小程序的API和功能较为有限。小程序主要使用JavaScript进行开发,具有丰富的UI组件库和调用底层接口的能力,可以实现类似于原生应用的功能。小程序开发相对于Vue和React来说,学习曲线较为平缓,适合用于构建简单的应用和小型的企业业务。 综上所述,Vue、React和小程序在不同的场景下具有不同的特点和应用。选择合适的技术要根据具体的需求和项目来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值