欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > React基础

React基础

2024/10/25 0:32:06 来源:https://blog.csdn.net/lbking666666/article/details/142062665  浏览:    关键词:React基础

一、组件

React 应用程序是由 组件 组成的。一个组件是 UI(用户界面)的一部分,它拥有自己的逻辑和外观。组成网页单个部分的一组代码,如按钮、导航栏、卡片等,也可以大到整个页面。它是组成网页单个部分的一组代码,如按钮、导航栏、卡片等。它就像一个JavaScript函数,但返回一个渲染的元素。它接受称为"prop"的参数。组件以大写字母命名。

函数组件示例

function MyButton(prop) {return (<button>I'm a {prop.color} button</button>);
}

注意事项

  • 推荐使用函数组件而不是基于类的组件。

  • 函数组件通常被称为无状态组件。

二、JSX

JSX是JavaScript XML的缩写,它允许我们在React中编写HTML。它引入了类似XML的标签和属性来创建React元素。它通过让你在.jsx文件中编写类似HTML的代码,使创建React组件变得容易。JSX使代码可读性更强、更整洁,而不是使用复杂的JavaScript。React DOM使用驼峰式命名属性,如htmlFor、onClick。

JSX 比 HTML 更加严格。你必须闭合标签,如 <br />。你的组件也不能返回多个 JSX 标签。你必须将它们包裹到一个共享的父级中,比如 <div>...</div> 或使用空的 <>...</> 包裹

JSX示例

function AboutPage() {return (<><h1>About</h1><p>Hello there.<br />How do you do?</p></>);
}

TSX是包含JSX语法的TypeScript文件的文件扩展名。使用TSX,你可以编写类型检查的代码,同时使用现有的JSX语法。使用TSX文件,你可以同时使用TypeScript和JSX编写React组件。

TSX示例

interface AgeProps {age: number;
}const GreetAge = (props: AgeProps) => {return (<div>你好,你 {props.age} 岁了。</div>);
};

三、Fragments

当你需要单个元素时,你可以使用 <Fragment> 将其他元素组合起来,使用 <Fragment> 组合后的元素不会对 DOM 产生影响,就像元素没有被组合一样。在大多数情况下,<Fragment></Fragment> 可以简写为空的 JSX 元素 <></>

Fragments示例

function Post() {return (<><PostTitle /><PostBody /></>);
}

注意事项

  • Fragments使代码更整洁、更易读。

  • 它们在内存使用上更高效。

  • 它们不能有CSS样式。

四、Props

React 组件使用 props 来互相通信。每个父组件都可以提供 props 给它的子组件,从而将一些信息传递给它。Props 可能会让你想起 HTML 属性,但你可以通过它们传递任何 JavaScript 值,包括对象、数组和函数。

props示例

//父组件
function Header() {<Avatarsize={100}person={{name: "Katsuko Saruhashi",imageId: "YfeOqp2",}}/>;
}
//子组件
function Avatar({ person, size }) {return (<imgclassName="avatar"src={getImageUrl(person)}alt={person.name}width={size}height={size}/>);
}

注意事项

  • Props是只读的,这确保了子组件不会操纵来自父组件的值。不要尝试“更改 props”。

五、State

当用户与组件交互时,组件需要跟踪某些值。例如,当用户点击亮/暗模式主题切换按钮时,它的值会改变(从亮到暗,反之亦然)。组件需要记住主题的当前值。在React中,这种特定于组件的内存被称为state。

定义state的示例

import { useState } from 'react';
const [index, setIndex] = useState(0);

注意事项

  • 在顶级组件中定义state总是一个好习惯,这样可以更容易地与其他子组件共享,并确保单一的事实来源。

六、hook

在 React 中,useState 以及任何其他以“use”开头的函数都被称为 Hook

hook示例

import { useState } from 'react';
const [index, setIndex] = useState(0);
const [showMore, setShowMore] = useState(false);

注意事项

  • use 开头的函数——只能在组件或自定hook的最顶层调用 你不能在条件语句、循环语句或其他嵌套函数内调用 Hook。Hook 是函数,但将它们视为关于组件需求的无条件声明会很有帮助。在组件顶部 “use” React 特性,类似于在文件顶部“导入”模块。
  • 惯例是将这对返回值命名为 const [thing, setThing]。你也可以将其命名为任何你喜欢的名称,但遵照约定俗成能使跨项目合作更易理解。

七、Context API

Context API用于在组件树中共享数据(如state、函数),而无需在每一级手动传递props。它通过简化状态管理和直接与将使用它的子组件共享数据来避免"prop钻取"。

createContext()方法用于创建一个context。这个函数返回一个context对象,其中包含两个组件 - Provider和Consumer。

Provider用于包裹你希望context可用的组件树部分。它接受一个必需的value prop,其中包含你想要在其他组件之间共享的数据。

useContext钩子用于访问数据。

Context API示例

使用createContext()方法创建一个context。将子组件包裹在Context Provider中,并提供state值。

import { useState, createContext} from "react";const UserContext = createContext();function ParentCounter() {const [count, setCount] = useState(10);return (<UserContext.Provider value={count}><h1>{`当前计数: ${count}!`}</h1><Button /></UserContext.Provider>);
}

使用useContext钩子访问count的值。

mport { useContext } from "react";function GrandChildConsumer() {const count = useContext(UserContext);return (<><h1>这是GrandChildConsumer</h1><h2>{`当前计数: ${count}`}</h2></>);
}

注意事项

通常使用useContext钩子而不是Consumer,以获得更好的可读性和简洁性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com