当前位置:首页 > JavaScript

js实现父子传值

2026-01-31 02:55:25JavaScript

父子组件传值(父传子)

在React中,父组件向子组件传递数据通常通过props实现。父组件在调用子组件时通过属性传递数据,子组件通过props接收。

父组件代码示例:

import ChildComponent from './ChildComponent';

function ParentComponent() {
  const data = "Hello from Parent";
  return (
    <div>
      <ChildComponent message={data} />
    </div>
  );
}

子组件代码示例:

function ChildComponent(props) {
  return <div>{props.message}</div>;
}

子父组件传值(子传父)

子组件向父组件传递数据需要通过回调函数。父组件定义一个函数并通过props传递给子组件,子组件调用该函数并传入参数。

父组件代码示例:

import ChildComponent from './ChildComponent';

function ParentComponent() {
  const handleData = (data) => {
    console.log(data);
  };

  return (
    <div>
      <ChildComponent onData={handleData} />
    </div>
  );
}

子组件代码示例:

js实现父子传值

function ChildComponent(props) {
  const sendData = () => {
    props.onData("Data from Child");
  };

  return (
    <button onClick={sendData}>Send Data</button>
  );
}

使用Context跨层级传值

对于深层嵌套的组件,可以使用React Context避免props逐层传递。

创建Context:

const MyContext = React.createContext();

父组件提供值:

js实现父子传值

function ParentComponent() {
  return (
    <MyContext.Provider value="Shared Data">
      <ChildComponent />
    </MyContext.Provider>
  );
}

子组件消费值:

function ChildComponent() {
  return (
    <MyContext.Consumer>
      {value => <div>{value}</div>}
    </MyContext.Consumer>
  );
}

使用Ref获取子组件实例

父组件可以通过ref获取子组件实例并直接调用其方法。

父组件代码示例:

import ChildComponent from './ChildComponent';

function ParentComponent() {
  const childRef = React.useRef();

  const handleClick = () => {
    childRef.current.childMethod();
  };

  return (
    <div>
      <ChildComponent ref={childRef} />
      <button onClick={handleClick}>Call Child Method</button>
    </div>
  );
}

子组件代码示例:

const ChildComponent = React.forwardRef((props, ref) => {
  React.useImperativeHandle(ref, () => ({
    childMethod: () => {
      console.log("Child method called");
    }
  }));

  return <div>Child Component</div>;
});

标签: 父子js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…