当前位置:首页 > React

react如何组件传值

2026-01-24 16:48:09React

父子组件传值(Props)

父组件通过属性(props)向子组件传递数据。子组件通过props接收父组件传递的值。

// 父组件
function Parent() {
  const data = "Hello from Parent";
  return <Child message={data} />;
}

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

子组件向父组件传值(回调函数)

父组件通过传递回调函数给子组件,子组件调用该函数并传递数据。

react如何组件传值

// 父组件
function Parent() {
  const handleData = (data) => {
    console.log(data); // "Hello from Child"
  };
  return <Child onSendData={handleData} />;
}

// 子组件
function Child({ onSendData }) {
  return <button onClick={() => onSendData("Hello from Child")}>Send</button>;
}

兄弟组件传值(状态提升)

通过将共享状态提升到共同的父组件中,再通过props分发给子组件。

// 父组件
function Parent() {
  const [sharedData, setSharedData] = useState("");

  return (
    <>
      <SiblingA onDataChange={setSharedData} />
      <SiblingB data={sharedData} />
    </>
  );
}

// 子组件A
function SiblingA({ onDataChange }) {
  return <button onClick={() => onDataChange("Updated")}>Update</button>;
}

// 子组件B
function SiblingB({ data }) {
  return <div>{data}</div>;
}

Context API(跨层级传值)

适用于深层嵌套组件或全局状态共享。

react如何组件传值

// 创建Context
const MyContext = createContext();

// 父组件提供数据
function Parent() {
  return (
    <MyContext.Provider value="Context Value">
      <Child />
    </MyContext.Provider>
  );
}

// 子组件消费数据
function Child() {
  const value = useContext(MyContext);
  return <div>{value}</div>;
}

使用状态管理库(Redux、MobX等)

适用于复杂应用的状态管理,实现任意组件间的数据共享。

// Redux示例
// store.js
const store = createStore(reducer);

// 组件中获取和更新数据
function Component() {
  const data = useSelector((state) => state.data);
  const dispatch = useDispatch();

  return (
    <button onClick={() => dispatch({ type: "UPDATE", payload: "New Data" })}>
      Update
    </button>
  );
}

使用Ref(非受控组件传值)

通过useRef直接访问DOM或组件实例。

function Parent() {
  const childRef = useRef();

  const handleClick = () => {
    childRef.current.doSomething(); // 调用子组件方法
  };

  return (
    <>
      <Child ref={childRef} />
      <button onClick={handleClick}>Trigger Child</button>
    </>
  );
}

// 子组件需使用forwardRef
const Child = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    doSomething: () => console.log("Child method called")
  }));

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

标签: 组件react
分享给朋友:

相关文章

vue实现倒计时组件

vue实现倒计时组件

Vue 倒计时组件实现 核心思路 通过 setInterval 或 setTimeout 实现时间递减,结合 Vue 的响应式数据更新 UI。需注意组件销毁时清除定时器。 基础实现方案 模板部分…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。 con…

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…