【青训营】-🐳React实战(上)

简介: 【青训营】-🐳React实战(上)

前言


到目前为止,笔者一直都是用Vue框架开发项目,由于最近参加了字节青训营嘛,课程中学习的框架是React,索性跟着老师来学习一下React,写了这样一篇笔记,如果有和我一样一直在用Vue而没有接触过React的同学欢迎来阅读哇~👏


创建React项目


npx create-react-app my-app #创建项目
npm start #启动项目
复制代码


这样我们的React项目就创建好啦


d8fba80bd43c4db689a3842a6bd15394_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


JSX


JSX 是React引入的基于JS的扩展语法,用JSX语法描述UI的结构。


9308426f55204a45ada25c20c9c0ed1e_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


JSX中的标签有两种类型,一种是HTML标签,一种是React组件标签。


如何将React元素渲染到DOM中?


const element = <h1>hello,world</h1>;
ReactDOM.render(element,document.getElementById('root'))
复制代码


我们调用React里面的renderAPI就可以实现渲染~


组件


component = (props) => element
复制代码


React 组件必须像纯函数一样运行!


问!什么是纯函数呢?


纯函数:


  1. 对于相同的入参,返回同样的结果


  1. 无副作用(当调用函数时,除了返回函数值之外,还对主调用产生附加的影响)


React 组件又分为函数组件和类组件,它们两者有何区别呢,我们来看代码~


函数组件


function Welcome(props) {
    return <h1>Hello, {props.name}</h1>;
}
复制代码


类组件


class Welcome extends React.Component {
    render() {
        return <h1>Hello,{this.props.name}</h1>;
    }
}
复制代码


组件的生命周期函数


94eaec0ceae34556b89b7e1fde9fbe0c_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

state


state的出现是为了在组件内部动态的渲染UI结构。state可以使React组件具有动态性。


state的更新必须使用setState这个API去做。


65ababb25de6402dac3e3de681729b47_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


setState注意事项


  1. 更改state要通过setState方法实现


// Wrong
this.state.comment = 'hello';
// Correct
this.setState({comment:'Hello'});
复制代码


  1. 传入参数问题


// Wrong
this.state.setState({
    counter: this.state.counter + this.props.increment
});
// Correct
this.state.setState((state,props)=> ({
    counter: state.counter + props.increment
}));
复制代码


Psops: 父组件传递给子组件的属性,在子组件内部只读。


State: 组件内部自己维护的状态,可以被修改。


组件的组合用法


abd175b1c8ec4fcdad80c3302a64837f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

Hooks


React 16.8 以后,出现了新的组件开发方式


884e63361de54fae88daad41baa5f24c_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


自定义hooks


以"use"作为函数名开头,封装通用逻辑的函数


import { useEffect } from 'react';
const useMounted = (fn:() => void) => {
    useEffect(() => {
        fn();
    },[]);
};
复制代码


使用hooks要遵守的规则


只能在函数组件、自定义hook中调用hook。

只能在函数的最顶层控制流中调用hook


8a9c1652c93c4d5aaf47032c41ba379e_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


为什么要出现hooks?


使用hook可以让我们对组件的状态管理和逻辑做复用,hook是面向React未来的设计。


React Router 路由层


路由的分类


路由可以分为服务端路由和客户端路由。


服务端路由


请求发送到服务端,服务端决定返回对应的页面内容。


客户端路由


请求不发送到服务端,由客户端代码更新页面内容。


两种路由的应用场景,左边是多页面应用,右边是单页面应用。


401e6a07fe034d02b95710b556efacc9_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


现在在日常开发中,单页面应用是非常场景的应用组织方式。


BrowserRouter与HashRouter


  • BrowserRouter:根据URL中的path做路由跳转
  • HashRouter:根据URL中的hash部分做路由跳转


Route


当URL和Route中定义的path匹配时,渲染对应的组件,重要props: path、exact


路由跳转


  • 声明式的组件方式:Link
  • 命令式的API调用方式:history.push useHistory:获取history对象
    useParams:获取路由中的参数


最后


⚽到这我们初步认识了React和React Router,下一篇文章我将会带大家认识Redux~

⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘

相关文章
|
15天前
|
移动开发 前端开发 JavaScript
React 表单验证实战
【10月更文挑战第25天】本文介绍了 React 表单验证的常见方法,包括原生 HTML5 验证、自定义验证逻辑和第三方库(如 Formik 和 Yup)的使用。通过具体代码示例,详细讲解了每种方法的实现步骤,并探讨了常见问题和易错点及其解决方法。旨在帮助开发者提高表单验证的有效性和安全性。
52 8
|
1月前
|
前端开发 数据安全/隐私保护
前端技术实战:React Hooks 实现表单验证
【10月更文挑战第1天】前端技术实战:React Hooks 实现表单验证
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
54 10
React技术栈-react使用的Ajax请求库实战案例
|
3月前
|
前端开发 Java UED
JSF 面向组件开发究竟藏着何种奥秘?带你探寻可复用 UI 组件设计的神秘之路
【8月更文挑战第31天】在现代软件开发中,高效与可维护性至关重要。JavaServer Faces(JSF)框架通过其面向组件的开发模式,提供了构建复杂用户界面的强大工具,特别适用于设计可复用的 UI 组件。通过合理设计组件的功能与外观,可以显著提高开发效率并降低维护成本。本文以一个具体的 `MessageComponent` 示例展示了如何创建可复用的 JSF 组件,并介绍了如何在 JSF 页面中使用这些组件。结合其他技术如 PrimeFaces 和 Bootstrap,可以进一步丰富组件库,提升用户体验。
55 0
|
3月前
|
开发者
告别繁琐代码,JSF标签库带你走进高效开发的新时代!
【8月更文挑战第31天】JSF(JavaServer Faces)标准标签库为页面开发提供了大量组件标签,如`&lt;h:inputText&gt;`、`&lt;h:dataTable&gt;`等,简化代码、提升效率并确保稳定性。本文通过示例展示如何使用这些标签实现常见功能,如创建登录表单和展示数据列表,帮助开发者更高效地进行Web应用开发。
42 0
|
3月前
|
前端开发 API 开发者
【React状态管理新思路】Context API入门:从零开始摆脱props钻孔的优雅之道,全面解析与实战案例分享!
【8月更文挑战第31天】React 的 Context API 有效解决了多级组件间状态传递的 &quot;props 钻孔&quot; 问题,使代码更简洁、易维护。本文通过电子商务网站登录状态管理案例,详细介绍了 Context API 的使用方法,包括创建、提供及消费 Context,以及处理多个 Context 的场景,适合各水平开发者学习与应用,提高开发效率和代码质量。
39 0
|
3月前
|
前端开发 JavaScript 数据管理
React Formik入门:简化表单处理的神器——全面掌握Formik在React表单开发中的高效应用与实战技巧
【8月更文挑战第31天】在React应用中,表单处理常常因繁琐而令人头疼。Formik作为一个开源库,专为简化React表单设计,减少冗余代码并提升处理效率。本文介绍Formik的使用方法及其优势,通过示例展示如何安装配置并创建基本表单,帮助开发者轻松应对各种表单需求。
43 0
|
3月前
|
前端开发 JavaScript 开发者
【前端革新力】React与CSS-in-JS完美邂逅:从styled-components到emotion,全面解析样式管理新趋势的实战应用与优势剖析!
【8月更文挑战第31天】CSS-in-JS 作为一种新兴的样式管理方式,近年来在前端社区受到广泛关注。它将样式嵌入 JavaScript,实现了样式与逻辑的高度耦合,提升了开发效率并解决了全局样式污染等问题。本文通过具体代码示例,探讨 CSS-in-JS 在 React 开发中的应用,并分享实践心得。首先介绍了 CSS-in-JS 的基本概念,然后详细展示了如何使用 styled-components 和 emotion 这两个流行库创建样式化组件。
153 0
|
3月前
|
前端开发 API
[译] 实战 React 18 中的 Suspense
[译] 实战 React 18 中的 Suspense
|
4月前
|
前端开发
React Hooks实战技巧:提升你的组件开发效率
【7月更文挑战第16天】React Hooks为React开发带来了革命性的变化,使得函数式组件更加强大和灵活。通过掌握上述实战技巧,你可以更高效地编写清晰、可维护和可复用的React组件。希望这些技巧能帮助你在React开发之路上走得更远。