当前位置: 首页 > news >正文

如何鉴定网站做的好坏哪些浏览器可以看禁止访问的网站

如何鉴定网站做的好坏,哪些浏览器可以看禁止访问的网站,wordpress 新建数据库,郑州郑州网站建设河南做网站公司文章目录 一、父组件向子组件传递数据1. 基本概念2. 示例代码3. 详解定义子组件 Son定义父组件 App导出父组件 App数据流props 的内容 二、子组件向父组件传递数据1. 基本概念2. 示例代码3. 详解引入React库和useState钩子定义子组件 Son定义父组件 App导出父组件 App数据流 三…

文章目录

    • 一、父组件向子组件传递数据
      • 1. 基本概念
      • 2. 示例代码
      • 3. 详解
        • 定义子组件 `Son`
        • 定义父组件 `App`
        • 导出父组件 `App`
        • 数据流
        • `props` 的内容
    • 二、子组件向父组件传递数据
      • 1. 基本概念
      • 2. 示例代码
      • 3. 详解
        • 引入React库和useState钩子
        • 定义子组件 `Son`
        • 定义父组件 `App`
        • 导出父组件 `App`
        • 数据流
    • 三、兄弟组件之间的通信
      • 1. 基本概念
      • 2. 示例代码
      • 3. 详解
    • 四、跨层级组件之间的通信
      • 1. 基本概念
      • 2. 创建上下文
      • 3. 详解

在React开发中,组件之间的通信是一个重要且常见的需求。无论是父组件向子组件传递数据,还是子组件向父组件发送消息,理解和掌握这些通信方式都是编写高效和可维护代码的关键。本文将详细介绍React中组件通信的各种方法,包括基础的父传子、子传父,及进阶的跨层级组件通信。通过本文,你将全面了解如何在React中实现高效的组件通信。

一、父组件向子组件传递数据

1. 基本概念

父组件向子组件传递数据是React中最常见的通信方式。父组件通过在子组件标签上绑定属性,将数据作为 props 传递给子组件。

2. 示例代码

import React from 'react';function Son(props) {// props:对象里面包含了父组件传递过来的所有的数据// { name: '父组件中的数据', age: 18, ... }console.log(props);return <div>this is son, {props.name}, jsx: {props.child}</div>;
}function App() {const name = 'this is app name';return (<div><Sonname={name}age={18}isTrue={false}list={['vue', 'react']}obj={{ name: 'jack' }}cb={() => console.log(123)}child={<span>this is span</span>}/></div>);
}export default App;

3. 详解

定义子组件 Son
function Son(props) {// props:对象里面包含了父组件传递过来的所有的数据// { name: '父组件中的数据', age: 18, ... }console.log(props);return <div>this is son, {props.name}, jsx: {props.child}</div>;
}

解释:

  • Son 是一个函数组件,它接收一个参数 props
  • props 是一个对象,包含了父组件传递给子组件的所有数据。
  • 在函数体内,通过 console.log(props) 可以看到 props 的内容,其中包括多个属性。
  • return 语句返回了一段 JSX,表示子组件的 UI 结构。
    • this is son 是静态文本。
    • {props.name} 是从 props 中提取的 name 属性,显示传递过来的名字。
    • {props.child} 是从 props 中提取的 child 属性,这里传递的是一个 JSX 元素 <span>
定义父组件 App
function App() {const name = 'this is app name';return (<div><Sonname={name}age={18}isTrue={false}list={['vue', 'react']}obj={{ name: 'jack' }}cb={() => console.log(123)}child={<span>this is span</span>}/></div>);
}

解释:

  • App 是一个函数组件,它定义了一个变量 name,其值为 'this is app name'
  • return 语句中,返回了一段包含子组件 Son 的 JSX。
  • 父组件通过在子组件标签上添加属性,将数据传递给子组件:
    • name={name} 传递字符串 'this is app name'
    • age={18} 传递数字 18
    • isTrue={false} 传递布尔值 false
    • list={['vue', 'react']} 传递数组 ['vue', 'react']
    • obj={{ name: 'jack' }} 传递对象 { name: 'jack' }
    • cb={() => console.log(123)} 传递函数 () => console.log(123)
    • child={<span>this is span</span>} 传递 JSX 元素 <span>this is span</span>
导出父组件 App
export default App;

解释:

  • 使用 export default App;App 组件作为默认导出,以便在其他文件中导入并使用它。
数据流

在这个例子中,数据流是单向的,即从父组件 App 传递到子组件 Son。父组件通过 props 向子组件传递数据,子组件通过 props 对象接收这些数据并进行渲染。

props 的内容

Son 组件被渲染时,props 对象包含如下属性:

{"name": "this is app name","age": 18,"isTrue": false,"list": ["vue", "react"],"obj": { "name": "jack" },"cb": function() { console.log(123); },"child": <span>this is span</span>
}

这些属性可以在 Son 组件中通过 props 进行访问和使用。例如:

  • props.name 将返回 'this is app name'
  • props.age 将返回 18
  • props.isTrue 将返回 false
  • props.list 将返回 ['vue', 'react']
  • props.obj 将返回 { name: 'jack' }
  • props.cb 将返回 () => console.log(123)
  • props.child 将返回 <span>this is span</span>

通过这种方式,父组件和子组件之间实现了数据的传递和共享,使得组件间的通信变得简单和直观。

二、子组件向父组件传递数据

1. 基本概念

子组件向父组件传递数据通常通过回调函数实现。父组件将一个回调函数作为 props 传递给子组件,子组件在需要传递数据时调用这个回调函数,并将数据作为参数传递回父组件。

2. 示例代码

import React, { useState } from 'react';function Son(props) {const handleClick = () => {props.onDataChange('子组件传递的数据');};return <button onClick={handleClick}>传递数据给父组件</button>;
}function App() {const [data, setData] = useState('');const handleDataChange = (newData) => {setData(newData);};return (<div><Son onDataChange={handleDataChange} /><p>父组件接收到的数据: {data}</p></div>);
}export default App;

3. 详解

引入React库和useState钩子
import React, { useState } from 'react';

这行代码引入了React库和 useState 钩子,使我们能够使用React的功能来定义和管理组件状态。

定义子组件 Son
function Son(props) {const handleClick = () => {props.onDataChange('子组件传递的数据');};return <button onClick={handleClick}>传递数据给父组件</button>;
}

解释:

  • Son 是一个函数组件,它接收一个参数 props
  • props 是一个对象,包含了父组件传递给子组件的所有数据和函数。
  • 定义了一个 handleClick 函数,当按钮被点击时,这个函数将会被调用。
  • handleClick 函数中,通过调用 props.onDataChange('子组件传递的数据'),子组件将数据 '子组件传递的数据' 传递给父组件。
  • return 语句返回了一段 JSX,表示子组件的 UI 结构:一个按钮,点击该按钮时会调用 handleClick 函数。
定义父组件 App
function App() {const [data, setData] = useState('');const handleDataChange = (newData) => {setData(newData);};return (<div><Son onDataChange={handleDataChange} /><p>父组件接收到的数据: {data}</p></div>);
}

解释:

  • App 是一个函数组件。
  • 使用 useState 钩子定义了一个状态变量 data,初始值为空字符串 ''useState 返回一个数组,包含当前状态值 data 和更新状态的函数 setData
  • 定义了一个 handleDataChange 函数,它接受一个参数 newData。在这个函数中,调用 setData(newData) 更新状态 data
  • return语句中,返回了一段包含子组件 Son的 JSX。
    • 通过 onDataChange={handleDataChange},将 handleDataChange 函数作为 onDataChange 属性传递给子组件 Son
    • 包含一个段落元素 <p>,显示父组件接收到的数据 data
导出父组件 App
export default App;

**解释:**使用 export default App;App 组件作为默认导出,以便在其他文件中导入并使用它。

数据流

在这个例子中,数据流是双向的:

  1. 父组件向子组件传递数据:
    • 父组件 ApphandleDataChange 函数通过 onDataChange 属性传递给子组件 Son
  2. 子组件向父组件传递数据:
    • 子组件 Son 在按钮点击时,调用 props.onDataChange('子组件传递的数据'),将数据 '子组件传递的数据' 传递给父组件。
    • 父组件的 handleDataChange 函数接收数据并调用 setData(newData) 更新父组件的状态。
    • 状态更新后,父组件重新渲染,显示最新的 data

三、兄弟组件之间的通信

1. 基本概念

兄弟组件之间的通信通常需要借助于它们的共同父组件。兄弟组件通过父组件共享状态或通过回调函数实现通信。

2. 示例代码

import React, { useState } from 'react';function BrotherA(props) {const handleClick = () => {props.onDataChange('BrotherA的数据');};return <button onClick={handleClick}>传递数据给BrotherB</button>;
}function BrotherB(props) {return <p>BrotherB接收到的数据: {props.data}</p>;
}function App() {const [data, setData] = useState('');const handleDataChange = (newData) => {setData(newData);};return (<div><BrotherA onDataChange={handleDataChange} /><BrotherB data={data} /></div>);
}export default App;

3. 详解

在上面的示例中:

  • 父组件 App 定义了一个状态 data,以及一个处理数据变化的回调函数 handleDataChange
  • 兄弟组件 BrotherABrotherB 都通过 props 接收父组件传递的数据或回调函数。
  • BrotherA 通过调用回调函数 props.onDataChange 传递数据给父组件。
  • 父组件通过更新状态,将数据传递给 BrotherB,实现兄弟组件之间的通信。

四、跨层级组件之间的通信

1. 基本概念

当需要跨越多个层级的组件之间进行通信时,可以使用React的上下文(Context)API。上下文API允许你在组件树中共享数据,而不必显式地通过每一级组件传递 props

2. 创建上下文

import React, { createContext, useContext, useState } from 'react';const MyContext = createContext();function Parent() {const [data, setData] = useState('初始数据');return (<MyContext.Provider value={{ data, setData }}><Child /></MyContext.Provider>);
}function Child() {return <Grandchild />;
}function Grandchild() {const { data, setData } = useContext(MyContext);const handleClick = () => {setData('更新后的数据');};return (<div><p>接收到的数据: {data}</p><button onClick={handleClick}>更新数据</button></div>);
}export default Parent;

3. 详解

在上面的示例中:

  • 创建了一个上下文 MyContext
  • 父组件 Parent 使用 MyContext.Provider 提供数据 data 和更新函数 setData
  • 子组件 Child 和孙组件 Grandchild 通过上下文共享父组件的数据和更新函数。
  • Grandchild 使用 useContext(MyContext) 获取上下文数据,并通过调用 setData 更新数据。

在这里插入图片描述


文章转载自:
http://allowably.hfytgp.cn
http://carbamate.hfytgp.cn
http://bounty.hfytgp.cn
http://carlovingian.hfytgp.cn
http://automatization.hfytgp.cn
http://bidarkee.hfytgp.cn
http://agrobiology.hfytgp.cn
http://bluntness.hfytgp.cn
http://bmc.hfytgp.cn
http://amethyst.hfytgp.cn
http://bern.hfytgp.cn
http://aglitter.hfytgp.cn
http://blushingly.hfytgp.cn
http://atween.hfytgp.cn
http://bakeapple.hfytgp.cn
http://blush.hfytgp.cn
http://bie.hfytgp.cn
http://blacky.hfytgp.cn
http://benefactor.hfytgp.cn
http://benedict.hfytgp.cn
http://anguine.hfytgp.cn
http://assign.hfytgp.cn
http://anvil.hfytgp.cn
http://causerie.hfytgp.cn
http://appearance.hfytgp.cn
http://catamite.hfytgp.cn
http://carrageenan.hfytgp.cn
http://beastings.hfytgp.cn
http://antipathy.hfytgp.cn
http://catechetical.hfytgp.cn
http://bassi.hfytgp.cn
http://abode.hfytgp.cn
http://beaverette.hfytgp.cn
http://brooklime.hfytgp.cn
http://chrissie.hfytgp.cn
http://banksman.hfytgp.cn
http://angary.hfytgp.cn
http://alastrim.hfytgp.cn
http://aesc.hfytgp.cn
http://asynergy.hfytgp.cn
http://antifungal.hfytgp.cn
http://agrology.hfytgp.cn
http://archangel.hfytgp.cn
http://abirritation.hfytgp.cn
http://algarroba.hfytgp.cn
http://backwardly.hfytgp.cn
http://cancellous.hfytgp.cn
http://antenatal.hfytgp.cn
http://caustically.hfytgp.cn
http://antifederalism.hfytgp.cn
http://agley.hfytgp.cn
http://argot.hfytgp.cn
http://btu.hfytgp.cn
http://bizonal.hfytgp.cn
http://chadian.hfytgp.cn
http://bifurcate.hfytgp.cn
http://butterbox.hfytgp.cn
http://announceable.hfytgp.cn
http://antrorsely.hfytgp.cn
http://centipede.hfytgp.cn
http://brigantine.hfytgp.cn
http://anzac.hfytgp.cn
http://avascular.hfytgp.cn
http://alcove.hfytgp.cn
http://alligatorfish.hfytgp.cn
http://caffein.hfytgp.cn
http://acidness.hfytgp.cn
http://bostonian.hfytgp.cn
http://bullfrog.hfytgp.cn
http://baudelairean.hfytgp.cn
http://allseed.hfytgp.cn
http://bioecology.hfytgp.cn
http://armature.hfytgp.cn
http://bloviate.hfytgp.cn
http://calcicolous.hfytgp.cn
http://bedkey.hfytgp.cn
http://anigh.hfytgp.cn
http://carping.hfytgp.cn
http://alfred.hfytgp.cn
http://chimborazo.hfytgp.cn
http://butyral.hfytgp.cn
http://antialcoholism.hfytgp.cn
http://adrate.hfytgp.cn
http://ceresine.hfytgp.cn
http://atomistics.hfytgp.cn
http://boyishly.hfytgp.cn
http://angularity.hfytgp.cn
http://bertha.hfytgp.cn
http://binche.hfytgp.cn
http://briony.hfytgp.cn
http://awol.hfytgp.cn
http://audiophile.hfytgp.cn
http://calamiform.hfytgp.cn
http://brioni.hfytgp.cn
http://chirk.hfytgp.cn
http://bosom.hfytgp.cn
http://bushiness.hfytgp.cn
http://boarish.hfytgp.cn
http://appropriable.hfytgp.cn
http://amygdalotomy.hfytgp.cn
http://www.tj-hxxt.cn/news/36077.html

相关文章:

  • 上海市住房建设部官方网站seo新闻
  • 佳城建站 网站seo门户 site
  • 无锡市建设局网站联系电话网络营销策划书范文
  • 房地产网站做百度推广快排seo
  • 平台网站开发佛山抖音seo
  • 番禺企业网站建设营销型网站策划
  • 单页淘宝客网站2014年行吗爱链接
  • 静海网站建设公司怎么设计网站
  • 推广公司名字大全汉中网站seo
  • wordpress用户个人资料武汉seo霸屏
  • 网站建设排行搜索引擎网址有哪些
  • 网站建设哪个好一些新公司做网站多少钱
  • 2020应该建设什么网站企业营销推广策划
  • 有哪些可以做威客的网站百度网络营销中心app
  • 怎样做关键词网站连接推广平台软件有哪些
  • 网站建设3lue网站收录网
  • 铁岭做网站的公司网站模板库
  • 时间轴网站设计北京网站建设制作开发
  • 做商城网站产品怎么分布江苏网站建设推广
  • 东莞企业营销型网站建设网络营销品牌
  • 东莞公司品牌网站建设企业网络推广
  • wordpress本地访问速度慢宜昌网站seo收费
  • 做搜索的网站网站开发技术
  • 视频网站视频预览怎么做个人博客网页制作
  • 西安网站开发定制制作微信公众号推广网站
  • 大连网站设计九首选仟亿科技玉溪seo
  • 什么网站可以做电子画册网站优化排名金苹果系统
  • 郑州 网站设计香飘飘奶茶软文
  • 上海公司注册在哪个区好147seo工具
  • 半成品代加工接订单平台杭州关键词优化外包