当前位置:首页 > 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
分享给朋友:

相关文章

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

react如何修改值

react如何修改值

修改 React 组件的值 在 React 中修改值通常涉及状态管理。根据组件的类型(类组件或函数组件)和状态管理方式(本地状态或全局状态),方法有所不同。 使用 useState(函数组件) 在函…

react 如何显示html

react 如何显示html

渲染原始 HTML 在 React 中直接插入原始 HTML 需要使用 dangerouslySetInnerHTML 属性。这个属性允许将 HTML 字符串直接渲染到 DOM 中,但需要注意潜在的安…

react如何进阶

react如何进阶

React 进阶学习路径 深入理解 React 核心机制 学习 React Fiber 架构、协调算法(Reconciliation)和虚拟 DOM 的工作原理。掌握 React 的渲染流程,包括组件…

如何全局安装react

如何全局安装react

全局安装React的方法 全局安装React通常指的是安装React相关的命令行工具或脚手架,以便在任何项目中使用。以下是具体步骤: 安装create-react-app工具 create-rea…