react基础(一)

特点:

1.声明式设计:React 使创建交互式 UI 变得轻而易举。为你应用的每一个状态设计简洁的视图,当数据变动时 React 能高效更新并渲染合适的组件

2.组件化: 构建管理自身状态的封装组件,然后对其组合以构成复杂的 UI。

3.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。

4.灵活:无论你现在使用什么技术栈,在无需重写现有代码的前提下,通过引入 React 来开发新功能。

一.准备

搭建本地开发环境

npm i -g create-react-app

创建目录

create-react-app X名X

启动配置

npm start启动项目
npm run eject暴露webpack配置文件
npm run build打包项目

目录内文件详解

二.步入正题

浅入了解

jsx语法,函数组件,类组件,模板语法,事件,State状态更新

1.jsx语法

javascript混合xml (html)语法格式,目的更好的在javascript中写html模板

特点:
1).只有一个根节点
2). {}写javascript
3).数组可以直接写htmI标签
4).对象样式自动展开
5). {/*注释*/}
6).类名用className

2.函数组件

无状态组件/视图组件/

function App{
    return(<></>)
}
export default App;

3.类组件

有状态组件/容器组件/
快捷键:rcc
 

import React, { Component } from 'react'

export default class App extends Component {
    render() {
        return (
            <div></div>
        )
    }
}

4.模板语法

文本渲染:

文本渲染:{}
html渲染: dangerouslySetInnerHTML={{ __html:XXX }}

条件渲染

三元运算符号: 条件?<>:<>
&&符号: {{条件&&<>}}

列表渲染

this.state.list.map(item => <h3 key={item}>{item}</h3>)

5.事件

和普通js事件一致,需要驼峰式写法

onClick={this.sayHj}
onClick={()=>{this. sayHi(参数)}}
onClick={this.sayHi.bind(this,参数)}

6.State状态更新

this.setState{{k:v}}
this.setState({k:v},()=>console.log("执行完毕的回调函数"))

三.上述代码

// .active{
//   color: #ff7700;
// }
//引入css .active
import './App.css'
function App() {
  var arr = [
    <h3>我喜欢jquery Dom和ajax操作</h3>,
    <h3>我爱react的组件</h3>,
    <p>vue很nice</p>
  ]
  var styles = {
    fontSize: "48px",
    color: "#f70"
  }
  return (
    <div>你好react
      {/* <p className='active'>我爱大前端</p>
      <p>{2 + 3}</p> */}
      {arr}
      <p style={styles}>我是一行文本</p>
    </div>
  )
}
export default App;
import React, { Component } from 'react'

export default class App extends Component {
    constructor(props) {
        super(props)
        this.state = {
            msg: "你好<strong>我喜欢</strong>react",
            isLog: false,
            list: ['vue', 'react', 'jQuery', 'js']
        }
    }
    sayHi = (msg = '我爱中国') => {
        alert(msg)
    }
    render() {
        return (
            <div>
                {/* 更新数据 setState */}
                <button onClick={() => {
                    this.setState({ isLog: !this.state.isLog }, () => {
                        console.log("切换数据完毕")
                    })
                }}>切换</button>
                {/* 事件 */}
                <button onClick={this.sayHi.bind(this, '中国人不骗中国人')}>问候-传参</button>
                <button onClick={() => { this.sayHi('我是中国人') }}>问候-传参</button>
                <button onClick={this.sayHi}>问候-许愿</button>
                <button onClick={() => alert('2022新年快乐')}>问候</button>
                {/* 列表渲染 */}
                {this.state.list.map(item => <h3 key={item}>{item}</h3>)}
                {/* 文本渲染 */}
                {this.state.msg}
                <div dangerouslySetInnerHTML={{ __html: this.state.msg }}></div>
                {/* 条件渲染 */}
                {this.state.isLog ? <p>欢迎回来小可爱</p> : <p>请登录</p>}
                {this.state.isLog && <p>中午红烧肉</p>}
            </div>
        )
    }
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值