当前位置:首页 > React

react如何传值

2026-03-31 07:56:42React

React 传值方法

React 中组件间传值有多种方式,根据组件关系和场景选择合适的方法。

父组件向子组件传值(Props)

父组件通过属性(props)将数据传递给子组件。子组件通过 props 接收数据。

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

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

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

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

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

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

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

将共享状态提升到共同的父组件中,通过 props 传递给兄弟组件。

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

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

// 兄弟组件A
function SiblingA({ onData }) {
  const data = "Data from SiblingA";
  return <button onClick={() => onData(data)}>Send Data</button>;
}

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

跨层级组件传值(Context API)

使用 React.createContext 创建上下文,通过 Provider 提供数据,子组件通过 useContextConsumer 消费数据。

// 创建上下文
const DataContext = React.createContext();

// 父组件
function Parent() {
  const data = "Context Data";
  return (
    <DataContext.Provider value={data}>
      <Child />
    </DataContext.Provider>
  );
}

// 子组件
function Child() {
  const data = useContext(DataContext);
  return <div>{data}</div>;
}

全局状态管理(Redux 或 Zustand)

对于复杂应用,可以使用状态管理库如 Redux 或 Zustand 进行全局状态管理。

// Redux 示例
import { useSelector, useDispatch } from "react-redux";

function Component() {
  const data = useSelector((state) => state.data);
  const dispatch = useDispatch();

  const updateData = () => {
    dispatch({ type: "UPDATE_DATA", payload: "New Data" });
  };

  return (
    <div>
      <div>{data}</div>
      <button onClick={updateData}>Update Data</button>
    </div>
  );
}

路由传值(React Router)

通过路由参数或查询字符串传递数据。

// 路由参数
<Route path="/user/:id" component={User} />

// 组件中获取参数
function User({ match }) {
  const { id } = match.params;
  return <div>User ID: {id}</div>;
}

// 查询字符串
<Link to="/search?query=react">Search</Link>

// 组件中获取查询参数
function Search() {
  const query = new URLSearchParams(useLocation().search).get("query");
  return <div>Search Query: {query}</div>;
}

使用 Refs 传值

通过 useRefcreateRef 创建引用,直接访问 DOM 或组件实例。

react如何传值

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 Component</div>;
});

标签: react
分享给朋友:

相关文章

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react如何配置

react如何配置

配置React项目的基本步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过命令行检查版本: node -v npm -v 创建React项目 使用官方工具Creat…

如何搭建react项目

如何搭建react项目

使用 Create React App 搭建项目 Create React App (CRA) 是官方推荐的快速搭建 React 项目的工具,无需配置构建工具(如 Webpack 或 Babel)。…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…