当前位置:首页 > React

react如何传参

2026-02-11 20:04:40React

在React中传递参数的方法

父子组件间通过props传参

父组件通过props向子组件传递数据。子组件通过this.props(类组件)或直接解构props(函数组件)接收参数。

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

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

// 子组件(类组件)
class Child extends React.Component {
  render() {
    return <div>{this.props.message}</div>;
  }
}

子组件向父组件传参

通过将回调函数作为props传递给子组件,子组件调用该函数并传递参数。

react如何传参

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

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

使用Context跨层级传参

适用于深层嵌套组件间的参数传递。

const MyContext = React.createContext();

// 提供者组件
function App() {
  return (
    <MyContext.Provider value="Shared Data">
      <Child />
    </MyContext.Provider>
  );
}

// 消费者组件
function Child() {
  return (
    <MyContext.Consumer>
      {value => <div>{value}</div>}
    </MyContext.Consumer>
  );
}

通过路由传参

使用react-router-dom进行页面间参数传递。

react如何传参

// 传递参数
<Link to="/user/123">User</Link>
// 或
<Link to={{ pathname: "/user", state: { id: 123 } }}>User</Link>

// 接收参数
function User() {
  // URL参数
  const { id } = useParams();
  // state参数
  const { state } = useLocation();
  return <div>User ID: {id || state?.id}</div>;
}

使用状态管理库传参

通过Redux或MobX等状态管理工具共享参数。

// Redux示例
// 定义action
const setData = (data) => ({ type: 'SET_DATA', payload: data });

// 组件中dispatch
dispatch(setData("Some data"));

// 组件中获取
const data = useSelector(state => state.data);

通过ref传参

使用ref直接访问组件实例或DOM元素。

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

  const handleClick = () => {
    childRef.current.doSomething("Data via ref");
  };

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

// 子组件需要使用forwardRef
const Child = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    doSomething: (data) => {
      console.log(data);
    }
  }));
  return <div>Child</div>;
});

标签: react
分享给朋友:

相关文章

如何学习react

如何学习react

学习 React 的步骤 理解基础概念 React 是一个用于构建用户界面的 JavaScript 库。学习 React 之前,建议掌握 JavaScript 的基础知识,包括 ES6+ 语法(如箭头…

如何评价react native

如何评价react native

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

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyfra…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…

如何同步react

如何同步react

同步React组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…