重温react-01

news2024/12/26 12:07:21

创建react项目

// 第一步
npm install create-react-app -g
// 第二步
create-react-app my-app

目录介绍

my-app/
  README.md
  # 项目第三方依赖包
  node_modules/
  
  package.json
  # 一般用来存放静态依赖
  public/
    index.html
    favicon.ico
  # 存放项目源代码,注意只有放在scr目录下的文件才会被webpack打包
  src/
    App.css
    App.js
    App.test.js
    index.css
    # 入口文件
    index.js
    logo.svg

二次封装webpack

运行下面指令之后,会出现一个config.js文件,

npm run eject

配置路径别名@

在webpack.config中添加 , 即可完成路径别名的配置

 alias: {
        // Support React Native Web
        // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
        'react-native': 'react-native-web',
        // Allows for better profiling with ReactDevTools
        ...(isEnvProductionProfile && {
          'react-dom$': 'react-dom/profiling',
          'scheduler/tracing': 'scheduler/tracing-profiling',
        }),
        ...(modules.webpackAliases || {}),
        // 添加路径
        '@': path.resolve(__dirname, '../src')
      },

项目创建一个HelloWorld

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

learnReact.js

import React from "react";

// 创建一个名为LearnReact的React函数组件

export default function LearnRcact() {
    return (
        <div>
            <h1>Hello, world!66</h1>
            <p>This is a paragraph.</p>
        </div>
    )
}

什么是jsx?

设想 

const element = <h1>Hello, world!</h1>

他既不是html也不是字符串,他是什么呢?它被称为 JSX,是一个 JavaScript 的语法扩展。我们建议在 React 中配合使用 JSX,JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式。JSX 可能会使人联想到模板语言,但它具有 JavaScript 的全部功能。

// 可以在变量后面直接跟html,但是注意不能换行
const jsx = <div></div>
      
// 如果想换行则可以加一个括号,注意只能有一个根元素
const jsx2 = (
  <div>
    <div>你好,jsx</div>
  </div>
)

// 在jsx中使用变量用 {} 括起来,里面就是我们在外部声明的变量
const hello = '你好'
const jsx3 = (
  <div>{hello}</div>
)


// 在jsx中做判断是否显示,一般用 三元运算
const is = true
const jsx5 = (
  <div>
    {is ? <div>你好,我显示了</div> : null}
    { is && <div>你好,我显示了</div> }
  </div>
)

jsx中使用css

import React, { Component } from 'react'
// import './learnReact.sass'
export default class LearnReact extends Component {
  render() {
    const is = true
    const hello = "helloworld~~!"
    return (
      <div>
        {
          is ? <div style={{ color: 'red' }}>{hello}</div> : null
        }
        {
          is && <div>{hello}</div>
        }
      </div>
    )
  }
}

react中的点击事件和数据的修改和存储数据一系列基础知识

import React, { Component } from 'react'
export default class onClickReact extends Component {
    constructor(props) {
        super();
        this.state = {
            number: 1,
            book: ['js', 'css', 'html']
        }
    }
    hello() {
        console.log(this);
    }
    add() {
        console.log(66666);
    }
    addNumber() {
        // 点击可以获取最新的值,jsx的回调函数
        this.setState({
            number: this.state.number + 1
        }, () => {
            console.log(this.state, '这个是最新的值');
        })
    }
    changeArrMessage() {
        this.setState(pre => ({
            // book: [...pre.book, 'react'] //展开往后面添加一条数据
            book: ['react']
        }))
    }
    render() {
        console.log(this);
        return (
            <div>
                {/* 普通点击事件 */}
                <div onClick={this.hello}>onClickReact</div>
                {/* 箭头函数点击事件 */}
                <div onClick={() => this.add()}>箭头函数点击事件</div>
                {/* 加法的点击事件 */}
                <button style={{ background: 'green', color: 'white' }} onClick={() => this.addNumber()}>点击会增加number的值</button>
                {/* number的值 */}
                <div>
                    {this.state.number}
                </div>

                {/* 下面这个是数组的值 */}
                <div onClick={() => this.changeArrMessage()}>
                    点击改变数组
                </div>
                <div>
                    666{this.state.book}
                </div>
                <hr />
                <div>
                    {this.state.book.map((item, index) => {
                        return <div style={{ margin: '10px' }} key={index}>
                            {item}
                        </div>
                    })}
                </div>
            </div>
        )
    }
}
import React, { Component } from 'react'
export default class variable extends Component {
    constructor(props) {
        super();
        this.state = {
            name: '张三',
            age: 18,
            sex: '男',
            show: false
        }
    }
    updateUserinfo() {
        this.setState({
            name: '李四',
            age: 20,
            sex: '女',
            show: true
        })
    }
    render() {
        return (
            <div>
                <div>
                    这是原来的: {this.state.name}---{this.state.age}---{this.state.sex} --{this.state.show ? '显示' : '不显示'}
                </div>
                <div>
                    <button onClick={() => this.updateUserinfo()}>点击修改之后的数据</button>
                </div>
                <div>
                    {this.state.show ? <div>这是修改之后的数据: {this.state.name}---{this.state.age}---{this.state.sex}</div> : ''}
                </div>
            </div>
        )
    }
}

react中的循环

import React, { Component } from 'react'
export default class mapElement extends Component {
    state = {
        infos: [
            {
                name: '张三',
                age: 18,
                sex: '男'
            },
            {
                name: '李四',
                age: 20,
                sex: '男'
            },
            {
                name: '王五',
                age: 22,
                sex: '男'
            }
        ]
    }
    render() {
        return (
            <div>{
                this.state.infos.map((item, index) => {
                    return <div key={index}>姓名:{item.name},年龄:{item.age},性别:{item.sex}</div>
                })}</div>
        )
    }
}

以上所有代码的效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1812034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java:使用JSqlParser给sql语句增加tenant_id和deleted条件

# 示例代码 【pom.xml】 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.4.3.1</version> </dependency>【MyJSqlParserTest.java】 package com.chz.myJSqlParser;pu…

短视频矩阵源码---矩阵托管1000个账号如何正规开发规则实现

一、短视频矩阵源码开发实现规则&#xff1a; 1.首先是确保各个官方平台api接口的稳定性&#xff0c;一定要是各个平台正规的api 2.其次是保证服务器运行&#xff0c;带宽保证能够并行&#xff0c;目前我们这边用的是源码所需服务器配置&#xff1a;规格:最低8核16G2、硬盘:系…

基于Sentry+OpenTelemetry实现微服务前后端全链路监控

文章目录 前⾔背景技术⽅案Sentry私有化部署部署环境准备 项目集成前端后端agent探针集成sentry sdk集成增强探针为⽇志注⼊TraceID异常处理SDK⾃定义开发sentry sdk⾃定义开发⾃定义SentryEvent注⼊otel追踪信息⾃定义全局异常上报issue事件新增动态过滤功能 Java Agent Exten…

【重拾数学知识】导数、极值和最值

前言 在深度学习中&#xff0c;梯度下降法是一种常用的优化算法&#xff0c;用于更新模型参数以最小化损失函数。这梯度下降法中涉及到数学中的导数、极值等相关知识&#xff0c;因此我们重新回顾相关内容&#xff0c;以便加深理解。 相关概念 导数 一个问题 如何求得一个…

Project 项目管理软件真的好用吗?

作为一个普通的职场人&#xff0c;或许只要掌握office全家桶&#xff0c;即可应对大部分工作。 但对项目经理来说&#xff0c;这是远远不够的。项目经理需要实时掌握项目进度、把关项目质量、应对项目风险、实时分析项目数据&#xff0c;做出正确的决策等等… 而拥有一款高效…

开发自动发消息插件需要用到的源代码!

在现今的数字化时代&#xff0c;自动发消息插件成为了许多应用程序中不可或缺的一部分&#xff0c;这些插件能够帮助我们自动化地完成消息发送任务&#xff0c;提高工作效率&#xff0c;节省时间成本。 那么&#xff0c;开发一个自动发消息插件究竟需要用到哪些关键的源代码呢…

C++STL初阶(4):初识vector

vector是一个类模版&#xff0c;是一个顺序容器&#xff0c;底层思维就是顺序表&#xff0c;而顺序表的本质就是一个可以改变size的数组。本篇基于string的学习基础&#xff0c;我们对vector进行一个大致的了解和学习 1.基本介绍 1. vector 是表示可变大小数组的序列容器&#…

【Unity自动化游戏框架】通用自动化游戏框架 爽到起飞的工作流 巨幅提升效率 质量 产能

https://github.com/sunsvip/GF_HybridCLRhttps://github.com/sunsvip/GF_HybridCLR 开始GF_HybridCLR自动化通用游戏框架&#xff0c;功能设计和用法的系列博文&#xff1b; GF_HybridCLR通用框架介绍 自动化工作流框架打包/HybridCLR热更流程 万人同屏战斗项目模板 前言: &…

2025年QS世界大学排名,美国大学表现如何?

大多数访问学者申请&#xff0c;在探讨QS大学排名中美国大学的表现时&#xff0c;我们不难发现这些学府在全球高等教育舞台上占据着举足轻重的地位。QS排名作为评估全球大学综合实力的重要指标之一&#xff0c;充分展示了美国大学在学术声誉、科研实力、教学质量和国际影响力等…

57.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(5)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;56.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露&#xff08;4&#xff09; 下载网站…

【PowerDesigner】PDM生成建表脚本

目录 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 &#x1f30d;1.2 PowerDesigner使用环境 &#x1f30a;2. PDM生成建表脚本 &#x1f30a;3. 研究心得 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 主要使用PowerDesigne…

2024年制作AI问答机器人给企业带来的几大好处

引言 在当今数字化时代&#xff0c;企业需要不断寻求创新&#xff0c;以提升客户服务水平、降低成本&#xff0c;并改善用户体验。其中&#xff0c;AI问答机器人作为一种智能化解决方案&#xff0c;正在成为越来越多企业的首选。本文将探讨制作AI问答机器人给企业内外部带来的…

北航第四次数据结构与程序设计编程题复习

到期末了&#xff0c;所以再来复习一下以前的作业。 北航第四次数据结构与程序设计编程题 一、栈操作&#xff08;栈-基本题&#xff09;二、C程序括号匹配检查三、计算器&#xff08;表达式计算-后缀表达式实现&#xff0c;结果为浮点&#xff09;四、文本编辑操作模拟&#…

python-找第一个只出现一次的字符

[题目描述] 给定一个只包含小写字母的字符串&#xff0c;请你找到第一个仅出现一次的字符。如果没有&#xff0c;输出 no。输入&#xff1a; 一个字符串&#xff0c;长度小于 1100。输出&#xff1a; 输出第一个仅出现一次的字符&#xff0c;若没有则输出 no。样例输入1 abcabd…

Java进阶_多态特性

生活中的多态 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作&#xff0c;如图所示&#xff1a; 现实中&#xff0c;比如我们按下 F1 键这个动作&#xff0c;同一个事件发生在不同的对象上会产生不同的结果。…

10.3 Go 同步与通信

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

BUUCTF---web---[SUCTF 2019]CheckIn

1、点击题目连接来到页面 2、上传正常的jpg文件&#xff0c;提示内容不能有<?。本来打算上传图片马&#xff0c;但是有过滤 3、可以改成下面的图片马&#xff1a; <script languagephp>eval($_POST[cmd]);</script> 4、将上面的一句话木马先写成txt再修改后缀为…

idea插件开发之hello idea plugin

写在前面 最近一直想研究下自定义idea插件的内容&#xff0c;这样如果是想要什么插件&#xff0c;但又一时找不到合适的&#xff0c;就可以自己来搞啦&#xff01;这不终于有时间来研究下&#xff0c;但过程可谓是一波三折&#xff0c;再一次切身体验了下万事开头难。那么&…

opencv_GUI

图像入门 import numpy as np import cv2 as cv # 用灰度模式加载图像 img cv.imread(C:/Users/HP/Downloads/basketball.png, 0)# 即使图像路径错误&#xff0c;它也不会抛出任何错误&#xff0c;但是打印 img会给你Nonecv.imshow(image, img) cv.waitKey(5000) # 一个键盘绑…

快递一键查询,只需快递单号,轻松掌握全程物流信息,让您的包裹追踪无忧!

在快节奏的现代生活中&#xff0c;快递已经成为我们生活中不可或缺的一部分。无论是网购的宝贝、亲朋好友寄来的礼物&#xff0c;还是工作中的紧急文件&#xff0c;快递都承载着我们的期待和需要。然而&#xff0c;面对众多的快递公司和复杂的查询流程&#xff0c;如何快速、准…