• react 笔记


    React

    构建react本地应用

    npx create-react-app my-app
    cd my-app
    npm start
    
    

    官网CDN

    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <!-- 生产环境中不建议使用 -->
    <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
    
    

    项目目录结构

    my-app
    src

    react 函数组件、class、hook

    1. 函数组件
      主要用于拆分组件时使用
    2. class组件
      一般不用,除非业务逻辑对生命周期要求十分严格
    3. hook
      官方推荐,替代class使用,有利于函数式编程以及单元测试

    使用react编码时的Tip

    引用图片资源

    动态引入,需要在结尾加.default否则图片不显示
    <img src={require('./../../images/JD.png').default} alt="JD" />

    静态引入
    import jd from './../../images/JD.png '
    <img src={jd} alt="JD" />

    添加层叠样式

    使用方式:

    // 定义
    const styles = {
        box: {
            display: "flex",
            justifyContent: "center",
            alignItems: "center",
        }
    }
    let box ={
            display: "flex",
            justifyContent: "center",
            alignItems: "center",
    }
    // 也可以定义在单独的样式js里,在需要用的页面使用import引用,定义的每一个变量前要加`export`
    
    // 使用
    <div style={styles.box}> // 单个行内样式JSX
    <div style={{display: "flex",justifyContent: "center",alignItems: "center",}}/>  // 单个行内样式
    <div style={{...styles.box}}/>  // 单个行内样式JSX,通过es6`...`展开变量
    <div style={{...styles.box, ...styles.box}}/> // 多个行内样式JSX,通过es6`...`展开变量
    <div className={box}/>  // 单个className样式JSX
    <div className={[box,box].join(' ')}/>  // 多个className样式JSX,通过`.join(' ')` 将多个变量展开
    

    ES6

    let a = ()=>{ // do }

    export

    // 定义
    export let Jd_goods_tab_btn = (props) => {
        return (
            <div>
                狗东西
            </div>
        );
    }
    
    //引用
    import {Jd_goods_tab_btn} from "./Domain";
    import {Jd_goods_tab_btn as btn} from "./Domain"; // as可以重命名导入的函数名
    
    // 使用
    <Domain.Jd_input/>
    
    

    hook

    基本格式:

    import React, {useState, useEffect} from 'react';
    
    export default function Home() {
        const [msg, setMsg] = useState('');
    
        useEffect(() => {    // Update the document title using the browser API
        });
    
        return "hook";
    };
    
    
    

    点击事件

    1. onClick={this.function} 通过this调用
    2. ()=>{function} 匿名函数

    阻止事件冒泡

    
    function ActionLink() {
      function handleClick(e) {
        e.preventDefault();
        console.log('链接被点击');
      }
     
      return (
        <a href="#" onClick={handleClick}>
          点我
        </a>
      );
    }
    

    hook路由跳转

    import {useHistory} from "react-router-dom";
    let history = useHistory();
    history.push('login');
    
    

    往组件内传值

    // 父组件 
    <zujian msg={'hello'}/>
    
    // 自组件接收值
    export default function SimpleBottomNavigation(props) {
      useEffect(() => {    // Update the document title using the browser API
        console.log(props.msg);
      });
    }
    
    有什么不同见解可以在评论区共同讨论
  • 相关阅读:
    SQL入门学习4-复杂查询
    SQL入门学习3-数据更新
    SQL入门学习2-聚合与排序
    SQL入门学习1-查询基础
    SQL入门学习0-数据库与SQL
    Exp9 20155218 Web安全基础实践
    20155218《网络对抗》Exp8 Web基础
    # 20155218 徐志瀚 EXP7 网络欺诈
    Exp6 20155218 信息搜集与漏洞扫描
    20155218《网络对抗》MSF基础应用
  • 原文地址:https://www.cnblogs.com/lambertlt/p/15003523.html
Copyright © 2020-2023  润新知