react通讯

createContext解决了什么问题?

你需要把一个 prop层层传递给深层嵌套的子组件时, 就可以用createContex

js 复制代码
const ThemeContext = createContext('light')

function App() {
    return (
        <ThemeContext.Provider value='dark'>
            <ToolBar/>
        </ThemeContext.Provider>
    )
}

function ToolBar() {
    return <Button/>
}

function Button() {
    const theme = useContext(ThemeContext)
    return <button>{theme}</button>
}

点击组件A, 修改组件b的颜色

js 复制代码
import React, { useState, createContext, useContext, Children } from "react";
import "./App.css";

const colorContext = createContext();
function Color({ children }) {
  const [color, setColor] = useState("pink");
  return (
    <colorContext.Provider value={{color, setColor}}>
      {children}
    </colorContext.Provider>
  );
}

function Txt() {
  const { color } = useContext(colorContext);
  return <div style={{ color }}>颜色{color}</div>;
}

function Btn() {
  const { setColor } = useContext(colorContext);
  return <>
    <button onClick={() => setColor('red')} >红色</button>
    <button onClick={() => setColor('blue')} >蓝色</button>
  </>
}

function App() {
  return (
    <Color>
      <Txt />
      <Btn />
    </Color>
  );
}

export default App;

React父组件如何与子组件通信?

父组件通过props向子组件传递数据和函数。子组件可以通过props获取到这些数据和函数。

子组件如何改变父组件的状态?

js 复制代码
import React, { useState } from 'react';

function Parent() {
  const [count, setCount] = useState(0);
  const handleIncrement = () => {
    setCount(prevCount => prevCount + 1);
  }
  
  return (
    <div>
      <p>Count: {count}</p>
      <Child onIncrement={handleIncrement} />
    </div>
  )
}

function Child({ onIncrement }) {
  return <button onClick={onIncrement}>Increment</button>;
}
相关推荐
freeinlife'2 分钟前
精准秒表计时器实现---基于js
开发语言·前端·javascript
王文?问13 分钟前
ESP32-S3 实战教程:本地语音识别控制 Web 塔防游戏,从固件到前端完整跑通
前端·游戏·语音识别
Hoshizola27 分钟前
uniapp与蓝牙设备连接详细步骤
前端·uni-app
优雅格子衫32 分钟前
uniapp 拍照相册选取后超级好用的裁剪组件,增加水印完全自定义
开发语言·前端·javascript·uni-app·vue
Dxy123931021636 分钟前
HTML如何写鼠标事件
前端·html·计算机外设
AI砖家1 小时前
前端 JavaScript 异步处理全方案详解:从回调到 Observable
开发语言·前端·javascript
用户713874229001 小时前
构建现代 Web 应用的令牌安全体系:Refresh Token Rotation、HttpOnly Cookie 与 Grace Period 全解析
前端
之歆1 小时前
Day21_电商详情页核心技术实战:从LESS预处理到复杂交互实现
开发语言·前端·javascript·css·交互·less
海鸥两三1 小时前
基于 Vue 3 + 高德地图的网格规划系统实战(有源码)
前端·javascript·vue.js
丷丩1 小时前
MapLibre GL JS第11课:获取鼠标指针坐标
前端·javascript·gis·地图·mapbox·maplibre gl js