国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端react入門(mén)day03-react獲取dom與組件通信

這篇具有很好參考價(jià)值的文章主要介紹了前端react入門(mén)day03-react獲取dom與組件通信。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

(創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡)前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

目錄

受控表單綁定?

React中獲取DOM

組件通信

父?jìng)髯?

父?jìng)髯?基礎(chǔ)實(shí)現(xiàn)

父?jìng)髯?props說(shuō)明

父?jìng)髯?- 特殊的prop children

子傳父?

使用狀態(tài)提升實(shí)現(xiàn)兄弟組件通信

使用Context機(jī)制跨層級(jí)組件通信


受控表單綁定?

概念:使用React組件的狀態(tài)(useState)控制表單的狀態(tài)

前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

1. 準(zhǔn)備一個(gè)React狀態(tài)值
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code
2. 通過(guò)value屬性綁定狀態(tài),通過(guò)onChange屬性綁定狀態(tài)同步的函數(shù)
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,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鉤子函數(shù) ,分為兩步:
1. 使用useRef創(chuàng)建 ref 對(duì)象,并與 JSX 綁定
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code
2. 在DOM可用時(shí),通過(guò) inputRef. current 拿到 DOM 對(duì)象
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,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;

組件通信

概念:組件通信就是 組件之間的數(shù)據(jù)傳遞, 根據(jù)組件嵌套關(guān)系的不同,有不同的通信方法
4

前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

父?jìng)髯?

父?jìng)髯?基礎(chǔ)實(shí)現(xiàn)

實(shí)現(xiàn)步驟
1. 父組件傳遞數(shù)據(jù) - 在子組件標(biāo)簽上 綁定屬性
2. 子組件接收數(shù)據(jù) - 子組件通過(guò) props參數(shù) 接收數(shù)據(jù)

?前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

//父?jìng)髯?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;

網(wǎng)頁(yè)顯示為:前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

父?jìng)髯?props說(shuō)明

1. props可傳遞任意的數(shù)據(jù)
數(shù)字、字符串、布爾值、數(shù)組、對(duì)象、函數(shù)、JSX
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code
2. props是只讀對(duì)象
子組件 只能讀取props中的數(shù)據(jù) ,不能直接進(jìn)行修改, 父組件的數(shù)據(jù)只能由父組件修改

父?jìng)髯?- 特殊的prop children

場(chǎng)景:當(dāng)我們把內(nèi)容嵌套在子組件標(biāo)簽中時(shí),父組件會(huì)自動(dòng)在名為children的prop屬性中接收該內(nèi)容
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

子傳父?

前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

核心思路:在子組件中調(diào)用父組件中的函數(shù)并傳遞參數(shù)
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code
前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,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;

使用狀態(tài)提升實(shí)現(xiàn)兄弟組件通信

前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code

實(shí)現(xiàn)思路:借助“狀態(tài)提升”機(jī)制,通過(guò)父組件進(jìn)行兄弟組件之間的數(shù)據(jù)傳遞
1. A組件先通過(guò)子傳父的方式把數(shù)據(jù)傳給父組件App
2. App拿到數(shù)據(jù)后通過(guò)父?jìng)髯拥姆绞皆賯鬟f給B組件

// 1. 通過(guò)子傳父 A -> App
// 2. 通過(guò)父?jìng)髯?App -> B

import { useState } from "react"

function A ({ onGetAName }) {
  // Son組件中的數(shù)據(jù)
  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機(jī)制跨層級(jí)組件通信

?前端react入門(mén)day03-react獲取dom與組件通信,# 前端react入門(mén),前端,react.js,javascript,typescript,visual studio code文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-791094.html

實(shí)現(xiàn)步驟:
1. 使用createContext方法創(chuàng)建一個(gè)上下文對(duì)象Ctx
2. 在頂層組件(App)中通過(guò) Ctx.Provider 組件 提供數(shù)據(jù)
3. 在底層組件(B)中通過(guò) useContext 鉤子函數(shù)獲取消費(fèi)數(shù)據(jù)
// App -> A -> B

import { createContext, useContext } from "react"

// 1. createContext方法創(chuàng)建一個(gè)上下文對(duì)象

const MsgContext = createContext()

// 2. 在頂層組件 通過(guò)Provider組件提供數(shù)據(jù)

// 3. 在底層組件 通過(guò)useContext鉤子函數(shù)使用數(shù)據(jù)

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

到了這里,關(guān)于前端react入門(mén)day03-react獲取dom與組件通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【前端】對(duì)前端小白極為友好的JS DOM入門(mén)文章

    【前端】對(duì)前端小白極為友好的JS DOM入門(mén)文章

    在現(xiàn)代web開(kāi)發(fā)中,JavaScript (JS) 是不可或缺的一部分,它使我們能夠?yàn)榫W(wǎng)頁(yè)賦予交互性和動(dòng)態(tài)性。其中,DOM(文檔對(duì)象模型)技術(shù)在前端開(kāi)發(fā)中起著至關(guān)重要的作用。本篇博客將帶領(lǐng)前端初學(xué)者深入理解JavaScript DOM技術(shù),為你構(gòu)建堅(jiān)實(shí)的基礎(chǔ)。 文檔對(duì)象模型(Document Object Mode

    2024年02月14日
    瀏覽(40)
  • 前端JavaScript入門(mén)-day03

    前端JavaScript入門(mén)-day03

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) 目錄 1、循環(huán)-for 1.?for 循環(huán)-基本使用 1. for循環(huán)語(yǔ)法 2. 退出循環(huán)? 2. for 循環(huán)嵌套? 2、數(shù)組? 1 數(shù)組是什么 2 數(shù)組的基本使用? 1. 聲明語(yǔ)法 2. 取值語(yǔ)法? 3. 一些術(shù)語(yǔ):? 4. 遍歷

    2024年02月11日
    瀏覽(15)
  • 跟著pink老師前端入門(mén)教程-day03

    跟著pink老師前端入門(mén)教程-day03

    6.1 表格的主要作用 主要用于 顯示、展示數(shù)據(jù) ,可以讓數(shù)據(jù)顯示的規(guī)整,可讀性非常好,特別是后臺(tái)展示數(shù)據(jù)時(shí),能夠熟練運(yùn)用表格就顯得很重要。 6.2 基本語(yǔ)法 6.3 表頭單元格標(biāo)簽 一般表頭單元格位于表格的 第一行或第一列 ,表頭單元格里面的 文本內(nèi)容加粗居中顯示 ,突

    2024年01月18日
    瀏覽(21)
  • 前端web入門(mén)-CSS-day03

    前端web入門(mén)-CSS-day03

    ?(創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) 目錄 CSS 初體驗(yàn) CSS 定義 CSS 引入方式? 選擇器 標(biāo)簽選擇器? 類(lèi)選擇器 id選擇器 通配符選擇器 畫(huà)盒子 文字控制屬性 字體大小 字體粗細(xì)? 字體樣式(是否傾斜)? 行高 字體

    2024年02月07日
    瀏覽(18)
  • 〖大前端 - 基礎(chǔ)入門(mén)三大核心之JS篇?〗- JavaScript 的DOM簡(jiǎn)介

    〖大前端 - 基礎(chǔ)入門(mén)三大核心之JS篇?〗- JavaScript 的DOM簡(jiǎn)介

    說(shuō)明:該文屬于 大前端全棧架構(gòu)白寶書(shū)專(zhuān)欄, 目前階段免費(fèi) , 如需要項(xiàng)目實(shí)戰(zhàn)或者是體系化資源,文末名片加V! 作者:不渴望力量的哈士奇(哈哥),十余年工作經(jīng)驗(yàn), 從事過(guò)全棧研發(fā)、產(chǎn)品經(jīng)理等工作,目前在公司擔(dān)任研發(fā)部門(mén)CTO。 榮譽(yù): 2022年度博客之星Top4、2023年度超

    2024年02月04日
    瀏覽(25)
  • 前端react入門(mén)day01-了解react和JSX基礎(chǔ)

    前端react入門(mén)day01-了解react和JSX基礎(chǔ)

    ?(創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) 目錄 React介紹? React是什么 React的優(yōu)勢(shì)? React的市場(chǎng)情況? 開(kāi)發(fā)環(huán)境搭建? 使用create-react-app快速搭建開(kāi)發(fā)環(huán)境 嘗試運(yùn)行程序? react基本框架? index.js App.js JSX基礎(chǔ)-概念和本質(zhì)

    2024年02月08日
    瀏覽(22)
  • 【react從入門(mén)到精通】React父子組件通信方式詳解(有示例)

    【react從入門(mén)到精通】React父子組件通信方式詳解(有示例)

    【分享幾個(gè)國(guó)內(nèi)免費(fèi)可用的ChatGPT鏡像】 【10幾個(gè)類(lèi)ChatGPT國(guó)內(nèi)AI大模型】 【用《文心一言》1分鐘寫(xiě)一篇博客簡(jiǎn)直yyds】 【用訊飛星火大模型1分鐘寫(xiě)一個(gè)精美的PPT】 在上一篇文章《JSX詳解》中我們了解了什么是jsx以及jsx的語(yǔ)法規(guī)則。 本文中我們將詳細(xì)了解React父子組件通信方式

    2024年02月05日
    瀏覽(124)
  • 探索前端跨組件通信:EventBus在Vue和React中的應(yīng)用

    探索前端跨組件通信:EventBus在Vue和React中的應(yīng)用

    本文作者系360奇舞團(tuán)前端開(kāi)發(fā)工程師 事件總線(Event Bus) 是一種用于組件間通信的模式,通常用于解決組件之間的解耦和簡(jiǎn)化通信的問(wèn)題。在前端框架中,如 Vue.js,事件總線是一個(gè)常見(jiàn)的概念?;旧?,事件總線是一個(gè)能夠觸發(fā)和監(jiān)聽(tīng)事件的機(jī)制,使得組件能夠在不直接依

    2024年02月02日
    瀏覽(26)
  • 前端react入門(mén)day04-useEffect與Hook函數(shù)

    前端react入門(mén)day04-useEffect與Hook函數(shù)

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) 目錄 useEffect 的使用 useEffect 的概念理解 useEffect 依賴(lài)項(xiàng)參數(shù)說(shuō)明 useEffect — 清除副作用 自定義Hook實(shí)現(xiàn) React Hooks使用規(guī)則 useEffect是一個(gè)React Hook函數(shù),用于在React組件中 創(chuàng)建不

    2024年01月22日
    瀏覽(24)
  • 〖大前端 - 基礎(chǔ)入門(mén)三大核心之JS篇?〗- DOM改變?cè)毓?jié)點(diǎn)的css樣式、HTML屬性

    〖大前端 - 基礎(chǔ)入門(mén)三大核心之JS篇?〗- DOM改變?cè)毓?jié)點(diǎn)的css樣式、HTML屬性

    說(shuō)明:該文屬于 大前端全棧架構(gòu)白寶書(shū)專(zhuān)欄, 目前階段免費(fèi) , 如需要項(xiàng)目實(shí)戰(zhàn)或者是體系化資源,文末名片加V! 作者:不渴望力量的哈士奇(哈哥),十余年工作經(jīng)驗(yàn), 從事過(guò)全棧研發(fā)、產(chǎn)品經(jīng)理等工作,目前在公司擔(dān)任研發(fā)部門(mén)CTO。 榮譽(yù): 2022年度博客之星Top4、2023年度超

    2024年02月04日
    瀏覽(98)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包