当前位置:首页 > 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实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…