React的入门

特点

组件化思维
单向数据流
虚拟dom

竞品

react
angular
vue

一、下载(我的是在node.js环境下搞的)

先在全局安装脚手架 即npm i -g create-react-app

创建项目

create-react-app myreact 创建myreact项目
cd myreact
npm start
运行myreact项目 一般这种安装完系统都会提醒你怎么进入与开启的

项目中的目录(简单介绍)

在这里插入图片描述

jsx语法

说明:javascript与html混合的写法(需要编译器编译才能被浏览器执行)

{} 中执行js
有且只有一个根节点
{/* 注释内容*/}
类名使用className
数组可以有html标签
style对象会自动展开

实例

//在APP.css中编写
import "./App.css";
function App() {
  return (
    <div>
      <h1 className="active">你好react</h1>
    </div>
  );
}
export default App;

模板语法

文本渲染、条件渲染、列表渲染


var styles = {
  fontSize: "48px",
  textAlign: "center",
  color: "green",
};
var arr = [
  <h2>我是老大</h2>,
  <p>那就是个p标签</p>,
  <a href="http: / /www. baidu.com">百度</a>,
];

function App() {
  return (
    <div>
      <p style={styles}>学会react 月薪10w</p>
      {arr}
      <p>{2 + 4}</p>
      <p>{5 > 10 ? "大于10" : "他还是个孩子"}</p>
    </div>
  );
}
export default App;

组件(推荐使用函数组件)

函数组件

负责展示,也称为视图组件 ,props 父组件传递的参数,没有this

类组件

父处理数据,也称为容器组件
state 数据
有生命周期
props 父组件传递的参数
有this

事件与响应函数

onClick={()=>{ 响应内容}}
onClick={this.function}

函数的参数

匿名函数:onClick={()=>this.say(参数))}
bind:onClick = {this.Hi.bind(this,参数)}

state数据

更新数据:this.setState({k:v})

表单

受控表单

state与表单绑定

<input value={this.state.msg} onChange={()=>this.setState({msg:e.target.value})}

非受控表单

通过ref

import {createRef} from 'React'
this.inpRef = createRef()
<input ref={this.inpRef}/>
<button onClick={()=>alert(this.inpRef.current.value)}>

组件的传参

容器组件App
state.color
state.size
state.msg 文本
setColor
setSize 两个方法
Size 控制大小
Color 控制颜色

import React, { Component } from "react";
import Color from "./components/Color";
import Size from "./components/Size";
class App extends Component {
  state = { msg: "传参", color: "#ff0000", size: 28 };
  setColor = (color) => this.setState({ color });
  setSize = (size) => this.setState({ size });
  //渲染内容
  render() {
    return (
      <div>
        <p
          style={{ color: this.state.color, fontSize: this.state.size + "px" }}
        >
          {this.state.msg}
        </p>
        <Color setColor={this.setColor} >
          <p>组件的插槽</p>
        </Color>
        <Size setSize={this.setSize} size={this.state.size}></Size>
      </div>
    );
  }
}
//color组件
function Color(props) {
  return (
    <div>
      <h3>控制大小颜色{props.color}</h3>
      <input
        type="color"
        onChange={(e) => {
          props.setColor(e.target.value);
        }}
        value={props.color}
      />
      {props.children}
    </div>
  );
}
export default Color;
Color.defaultProps = { color: "#FFFF00" };//默认

生命周期

挂载constructor(挂载进度1)
挂载getDerivedStateFromProps(挂载进度2)
挂载render(挂载进度3)
挂载componentDidMount(挂载进度4)
更新getDerivedStateFromProps(更新进度1)
更新shouldComponentUpdate(更新进度2)
更新render(更新进度3)
更新getSnapshotBeforeUpdate(更新进度4)
更新componentDidUpdate(更新进度5)

import { useState, useEffect } from "react";//使用数据,以及副作用(不一定完全准确)
function App() {
  const [count, setCount] = useState(100);
  const [num, setNum] = useState(5);
  useEffect(() => {
    console.log("回调函数模拟cdm");
  }, []);
  useEffect(() => {
    console.log("回调函数模拟num的更新");
  }, [num, count]);
  return (
    <div>
      <h1>hooks</h1>
      <p>函数组件拥有模拟生命周期,模拟state,模拟ref的能力</p>
      <button onClick={() => setNum(num + 1)}>{num}</button>
      <button onClick={() => setCount(count + 5)}>{count}</button>
    </div>
  );
}

export default App;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值