当前位置:首页 > JavaScript

js实现父子传值

2026-03-01 18:01:40JavaScript

父子组件传值方法

在JavaScript框架中(如React、Vue等),父子组件传值是常见需求。以下是几种典型实现方式:

父传子(Props)

父组件通过属性向子组件传递数据,子组件通过props接收:

// 父组件
<ChildComponent message="Hello from parent" />

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

子传父(回调函数)

父组件通过传递回调函数给子组件,子组件调用该函数传值:

// 父组件
function handleChildData(data) {
  console.log(data);
}
<ChildComponent onDataSend={handleChildData} />

// 子组件
function ChildComponent({ onDataSend }) {
  const sendData = () => onDataSend("Child data");
  return <button onClick={sendData}>Send</button>;
}

Context API

跨层级组件传值可使用Context:

const MyContext = React.createContext();

// 父组件
<MyContext.Provider value={{ data }}>
  <ChildComponent />
</MyContext.Provider>

// 子组件
function ChildComponent() {
  const context = useContext(MyContext);
  return <div>{context.data}</div>;
}

事件总线

通过自定义事件实现通信:

// 创建事件总线
const eventBus = new EventEmitter();

// 子组件发送事件
eventBus.emit("dataEvent", { payload: "data" });

// 父组件监听
eventBus.on("dataEvent", (data) => {
  console.log(data);
});

Refs引用

父组件通过ref直接访问子组件方法:

js实现父子传值

// 子组件暴露方法
useImperativeHandle(ref, () => ({
  sendData: () => "data"
}));

// 父组件调用
const childRef = useRef();
childRef.current.sendData();

注意事项

  • 单向数据流原则:避免子组件直接修改父组件props
  • 性能优化:避免不必要的重新渲染
  • 类型检查:使用PropTypes或TypeScript确保数据类型安全

不同框架实现细节略有差异,但核心思路相通。选择合适方法需根据具体场景和技术栈决定。

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

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…