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>;
}
相关推荐
vvilkim1 分钟前
Vue.js 中的计算属性、监听器与方法:区别与使用场景
前端·javascript·vue.js
乘风!4 分钟前
SpringBoot前后端不分离,前端如何解析后端返回html所携带的参数
前端·spring boot·后端
Anlici1 小时前
跨域解决方案还有优劣!?
前端·面试
庸俗今天不摸鱼1 小时前
【万字总结】构建现代Web应用的全方位性能优化体系学习指南(二)
前端·性能优化·webp
追寻光2 小时前
Java 绘制图形验证码
java·前端
前端snow2 小时前
爬取数据利用node也行,你知道吗?
前端·javascript·后端
村头一颗草2 小时前
高德爬取瓦片和vue2使用
前端·javascript·vue.js
远山无期2 小时前
vue3+vite项目接入qiankun微前端关键点
前端·vue.js
陈随易2 小时前
告别Node.js:2025年,我为何全面拥抱Bun
前端·后端·程序员
还是鼠鼠2 小时前
Node.js--exports 对象详解:用法、示例与最佳实践
前端·javascript·vscode·node.js·web