React基础知识入门

组件

React官方文档对组件的描述:React 应用程序是由 组件 组成的。一个组件是 UI(用户界面)的一部分,它拥有自己的逻辑和外观。组件可以小到一个按钮,也可以大到整个页面。
官方文档地址:https://zh-hans.react.dev/

如何创建一个组件:通过JavaScript函数返回标签来创建

function Button1() {
   
  return (
    <button>Button</button>
  )
}

创建嵌套的组件

function Button() {
   
  return (
    <div>
      <button>Button</button>
    </div>
  )
}
function App() {
   
  return (
    <>
      <h1>Hello React</h1>
      <Button />
    </>
  )
}
export default App

以上的这种(通过JavaScript函数返回标签)语法是JSX,大多数 React 项目会使用 JSX,组件的首字母必须以大写开头,HTML标签全是小写字母,这样也便于区分是React组件还是HTML标签。你的组件不能返回多个JSX标签,可以使用一个共享的父级<div>...<div>或者空的<>...</>将它们包裹起来即可

为组件添加样式

通过className为组件指定一个样式,与HTML的class工作方式相同

function Button() {
   
  return (
    <div>
      <button className="button1">Button</button>
    </div>
  )
}
// 样式
.button1 {
   
  background-color: #646cff;
  color: #fff;
}

为组件添加事件onClick

通过onClick为组件添加一个事件处理函数

function handleClick() {
   
    alert('hello react')
  }
function Button({
   count, onClick}) {
   
  return (
    <div>
      <button className="button1" onClick={
   handleClick}>Button</button>
    </div>
  )
}
// 样式
.button1 {
   
  background-color: #646cff;
  color: #fff;
}

在组件中访问JavaScript变量

在组件中你可以访问JavaScript变量,通过大括号{}来访问变量例如obj.name

const obj = {
   
  name: '按钮',
  size: '100px'
}
function Button({
   count, onClick}) {
   
  return (
    <div>
      <button className="button1" style={
   {
    width: obj.size }}>{
   obj.name}</button>
    </div>
  )
}

条件渲染

就像编写普通JavaScript代码if语句一样来对组件进行条件渲染

function Button() {
   
  return (
    <div>
      <button className="button">Button</button>
    </div>
  )
}
function Button1() {
   
  return (
    <div>
      <button className="button1">Button1</button>
    </div>
  )
}
const content = false
function App() {
   
  return (
    <>
      <h1>Hello React</h1>
      {
   
        content ? (<Button />) : (<Button1 />)
      }
    </>
  )
}

useState状态

有时候我们可能需要组件记住某个状态,比如一个按钮被点击的次数,想做到这一点可以在你的组件使用useState
先从React中引入useState并在组件中声明一个state变量,count为当前的值,setCount用来操作count的函数。count初始值为0,当点击按钮后调用setCount将count的值加1,这个count的值随着按钮的点击会不断的增加

import {
    useState } from 'react'
const obj = {
   
  name: '按钮',
  size: '100px'
}
function Button1() {
   
  const [count, setCount] = useState(0)
  function handleClick() {
   
    setCount(count + 1)
  }
  return (
    <button className="button2" onClick={
   handleClick} style={
   {
    width: obj.size }}>{
   obj.name}2</button>
  )
}

组件间共享数据 状态提升

有没有可能两个组件共享一个状态呢?比如有两个按钮点击其中一个按钮另一个的值也会实时更新。这就需要用到状态提升,其实就是类似于vue中父子组件之间传值,在React中这种传递信息的方式叫做prop,由父组件将state的值和事件处理函数handleClick传递给子组件,再由子组件去执行事件并更新state的值

function Button({
   count, onClick}) {
   
  return (
    <div>
      <button className="button1" onClick={
   onClick} style={
   {
    width: obj.size }}>{
   obj.name}: {
   count}</button>
    </div>
  )
}
function App() {
   
  const [count, setCount] = useState(0)
  function handleClick() {
   
    setCount(count + 1)
  }
  return (
    <>
      <h1>Hello World</h1>
      <div className='card'>
        <button onClick={
   handleClick}>count is {
   count}</button>
      </div>
      {
   
        content ? (<Button count={
   count} onClick={
   handleClick}  />) : (<Button1 />)
      }
      <Button onclick={
   handleClick} count={
   count}  />
    </>
  )
}

相关推荐

  1. React基础知识入门

    2023-12-11 15:40:04       47 阅读
  2. 电脑入门基础知识

    2023-12-11 15:40:04       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 15:40:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 15:40:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 15:40:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 15:40:04       18 阅读

热门阅读

  1. PTA:哈夫曼编码

    2023-12-11 15:40:04       44 阅读
  2. mysql8.x创建insert/update/delete触发器

    2023-12-11 15:40:04       40 阅读
  3. 算法通关村第十七关 | 黄金挑战 | 跳跃游戏

    2023-12-11 15:40:04       43 阅读
  4. execution unit的概念与实现----AGU

    2023-12-11 15:40:04       39 阅读
  5. C++- 格式化输出

    2023-12-11 15:40:04       43 阅读
  6. Redisson的基本使用

    2023-12-11 15:40:04       38 阅读
  7. 学习-ES

    2023-12-11 15:40:04       36 阅读
  8. 通讯录实现

    2023-12-11 15:40:04       35 阅读
  9. 央企国企相关

    2023-12-11 15:40:04       40 阅读