前端react入门day03-react获取dom与组件通信

这篇具有很好参考价值的文章主要介绍了前端react入门day03-react获取dom与组件通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

目录

受控表单绑定 

React中获取DOM

组件通信

父传子 

父传子-基础实现

父传子-props说明

父传子 - 特殊的prop children

子传父 

使用状态提升实现兄弟组件通信

使用Context机制跨层级组件通信


受控表单绑定 

概念:使用React组件的状态(useState)控制表单的状态

前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

1. 准备一个React状态值
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
2. 通过value属性绑定状态,通过onChange属性绑定状态同步的函数
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
//受控绑定表单
import { useState } from "react"

function App() {
  const[value ,setValue]=useState('')
  return (
    <div>
      <input 
      value={value}
      onChange={(e)=>setValue(e.target.value)}
      type="text"/>
    </div>
  );
}

export default App;

React中获取DOM

在 React 组件中获取/操作 DOM,需要使用 useRef React Hook钩子函数 ,分为两步:
1. 使用useRef创建 ref 对象,并与 JSX 绑定
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
2. 在DOM可用时,通过 inputRef. current 拿到 DOM 对象
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
2
//React获取DOM
import { useRef } from "react"

function App() {
  const inputRef = useRef(null)
  const showDom=()=>{
    console.log(inputRef.current)
  }
  return (
    <div>
     <input type="text" ref={inputRef}/>
     <button onClick={showDom}>获取dom</button>
    </div>
  );
}

export default App;

组件通信

概念:组件通信就是 组件之间的数据传递, 根据组件嵌套关系的不同,有不同的通信方法
4

前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

父传子 

父传子-基础实现

实现步骤
1. 父组件传递数据 - 在子组件标签上 绑定属性
2. 子组件接收数据 - 子组件通过 props参数 接收数据

 前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

//父传子
function Son(props) {
  return <div>this is son,{props.name}</div>
}

function App() {
  const name = 'this is app name'
  return (
    <div>
     <Son name={name} />
    </div>
  );
}

export default App;

网页显示为:前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

父传子-props说明

1. props可传递任意的数据
数字、字符串、布尔值、数组、对象、函数、JSX
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
2. props是只读对象
子组件 只能读取props中的数据 ,不能直接进行修改, 父组件的数据只能由父组件修改

父传子 - 特殊的prop children

场景:当我们把内容嵌套在子组件标签中时,父组件会自动在名为children的prop属性中接收该内容
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

子传父 

前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

核心思路:在子组件中调用父组件中的函数并传递参数
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code
前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

function Son({onGetSonMsg}) {
  const sonMsg="this is son msg"
  return (
    <div>
    this is Son
    <button onClick={()=>onGetSonMsg(sonMsg)}>sendMsg </button>
    </div>
  )
}

function App() {
  const getMsg=(msg)=>{
    console.log(msg)
  }
  return (
    <div>
      this is APP
      <Son onGetSonMsg={getMsg} />
    </div>
  );
}

export default App;

使用状态提升实现兄弟组件通信

前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code

实现思路:借助“状态提升”机制,通过父组件进行兄弟组件之间的数据传递
1. A组件先通过子传父的方式把数据传给父组件App
2. App拿到数据后通过父传子的方式再传递给B组件

// 1. 通过子传父 A -> App
// 2. 通过父传子 App -> B

import { useState } from "react"

function A ({ onGetAName }) {
  // Son组件中的数据
  const name = 'this is A name'
  return (
    <div>
      this is A compnent,
      <button onClick={() => onGetAName(name)}>send</button>
    </div>
  )
}

function B ({ name }) {
  return (
    <div>
      this is B compnent,
      {name}
    </div>
  )
}

function App () {
  const [name, setName] = useState('')
  const getAName = (name) => {
    console.log(name)
    setName(name)
  }
  return (
    <div>
      this is App
      <A onGetAName={getAName} />
      <B name={name} />
    </div>
  )
}

export default App

使用Context机制跨层级组件通信

 前端react入门day03-react获取dom与组件通信,# 前端react入门,前端,react.js,javascript,typescript,visual studio code文章来源地址https://www.toymoban.com/news/detail-791094.html

实现步骤:
1. 使用createContext方法创建一个上下文对象Ctx
2. 在顶层组件(App)中通过 Ctx.Provider 组件 提供数据
3. 在底层组件(B)中通过 useContext 钩子函数获取消费数据
// App -> A -> B

import { createContext, useContext } from "react"

// 1. createContext方法创建一个上下文对象

const MsgContext = createContext()

// 2. 在顶层组件 通过Provider组件提供数据

// 3. 在底层组件 通过useContext钩子函数使用数据

function A () {
  return (
    <div>
      this is A component
      <B />
    </div>
  )
}

function B () {
  const msg = useContext(MsgContext)
  return (
    <div>
      this is B compnent,{msg}
    </div>
  )
}

function App () {
  const msg = 'this is app msg'
  return (
    <div>
      <MsgContext.Provider value={msg}>
        this is App
        <A />
      </MsgContext.Provider>
    </div>
  )
}

export default App

到了这里,关于前端react入门day03-react获取dom与组件通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端】对前端小白极为友好的JS DOM入门文章

    在现代web开发中,JavaScript (JS) 是不可或缺的一部分,它使我们能够为网页赋予交互性和动态性。其中,DOM(文档对象模型)技术在前端开发中起着至关重要的作用。本篇博客将带领前端初学者深入理解JavaScript DOM技术,为你构建坚实的基础。 文档对象模型(Document Object Mode

    2024年02月14日
    浏览(33)
  • 前端JavaScript入门-day03

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 1、循环-for 1. for 循环-基本使用 1. for循环语法 2. 退出循环  2. for 循环嵌套  2、数组  1 数组是什么 2 数组的基本使用  1. 声明语法 2. 取值语法  3. 一些术语:  4. 遍历

    2024年02月11日
    浏览(51)
  • 跟着pink老师前端入门教程-day03

    6.1 表格的主要作用 主要用于 显示、展示数据 ,可以让数据显示的规整,可读性非常好,特别是后台展示数据时,能够熟练运用表格就显得很重要。 6.2 基本语法 6.3 表头单元格标签 一般表头单元格位于表格的 第一行或第一列 ,表头单元格里面的 文本内容加粗居中显示 ,突

    2024年01月18日
    浏览(46)
  • 前端web入门-CSS-day03

     (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 CSS 初体验 CSS 定义 CSS 引入方式  选择器 标签选择器  类选择器 id选择器 通配符选择器 画盒子 文字控制属性 字体大小 字体粗细  字体样式(是否倾斜)  行高 字体

    2024年02月07日
    浏览(43)
  • 〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介

    说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费 , 如需要项目实战或者是体系化资源,文末名片加V! 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司担任研发部门CTO。 荣誉: 2022年度博客之星Top4、2023年度超

    2024年02月04日
    浏览(54)
  • 前端react入门day01-了解react和JSX基础

     (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 React介绍  React是什么 React的优势  React的市场情况  开发环境搭建  使用create-react-app快速搭建开发环境 尝试运行程序  react基本框架  index.js App.js JSX基础-概念和本质

    2024年02月08日
    浏览(76)
  • 【react从入门到精通】React父子组件通信方式详解(有示例)

    【分享几个国内免费可用的ChatGPT镜像】 【10几个类ChatGPT国内AI大模型】 【用《文心一言》1分钟写一篇博客简直yyds】 【用讯飞星火大模型1分钟写一个精美的PPT】 在上一篇文章《JSX详解》中我们了解了什么是jsx以及jsx的语法规则。 本文中我们将详细了解React父子组件通信方式

    2024年02月05日
    浏览(97)
  • 探索前端跨组件通信:EventBus在Vue和React中的应用

    本文作者系360奇舞团前端开发工程师 事件总线(Event Bus) 是一种用于组件间通信的模式,通常用于解决组件之间的解耦和简化通信的问题。在前端框架中,如 Vue.js,事件总线是一个常见的概念。基本上,事件总线是一个能够触发和监听事件的机制,使得组件能够在不直接依

    2024年02月02日
    浏览(70)
  • 前端react入门day04-useEffect与Hook函数

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 useEffect 的使用 useEffect 的概念理解 useEffect 依赖项参数说明 useEffect — 清除副作用 自定义Hook实现 React Hooks使用规则 useEffect是一个React Hook函数,用于在React组件中 创建不

    2024年01月22日
    浏览(55)
  • 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性

    说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费 , 如需要项目实战或者是体系化资源,文末名片加V! 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司担任研发部门CTO。 荣誉: 2022年度博客之星Top4、2023年度超

    2024年02月04日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包