当前位置:首页 > JavaScript

js实现父子传值

2026-03-01 18:01:40JavaScript

父子组件传值方法

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

父传子(Props)

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

js实现父子传值

// 父组件
<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:

js实现父子传值

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直接访问子组件方法:

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

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

注意事项

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

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

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

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…

js实现筛选

js实现筛选

JavaScript 实现数据筛选的方法 使用 Array.filter() 方法 Array.filter() 是 JavaScript 中最常用的筛选方法,它会创建一个新数组,包含通过回调函数测试…

js sort 实现

js sort 实现

数组排序基础方法 JavaScript 数组的 sort() 方法默认按照字符串 Unicode 码点顺序排序。直接调用时会将元素转为字符串再比较: const arr = [10, 2, 5, 1…

js实现点击隐藏

js实现点击隐藏

使用CSS类切换实现点击隐藏 通过添加或移除CSS类来控制元素的显示与隐藏。定义一个隐藏样式类如.hidden { display: none; },通过事件监听切换该类。 document.que…