react如何传递参数
传递 props 给子组件
在父组件中通过属性名直接传递数据,子组件通过 props 对象接收。例如父组件传递 name 和 age:
<ChildComponent name="John" age={25} />
子组件通过解构或直接访问 props 使用:
function ChildComponent({ name, age }) {
return <div>{name} is {age} years old</div>;
}
使用 context 跨层级传递
通过 React.createContext 创建上下文,Provider 提供数据,Consumer 或 useContext 消费数据。创建上下文:
const UserContext = React.createContext();
在父组件用 Provider 包裹并传递值:
<UserContext.Provider value={{ user: "Alice" }}>
<ChildComponent />
</UserContext.Provider>
子组件通过 useContext 获取:
const { user } = useContext(UserContext);
通过路由传递参数
使用 react-router-dom 时,可通过 URL 参数或状态传递。动态路由匹配参数:
<Route path="/user/:id" component={UserPage} />
在目标组件中通过 useParams 获取:
const { id } = useParams();
通过 Link 的 state 传递状态:
<Link to="/profile" state={{ fromHome: true }}>Profile</Link>
目标组件用 useLocation 接收:
const { state } = useLocation();
回调函数传递数据
父组件定义回调,子组件调用并传参。父组件定义并传递回调:
function Parent() {
const handleData = (data) => console.log(data);
return <Child onData={handleData} />;
}
子组件触发回调:
function Child({ onData }) {
return <button onClick={() => onData("Hello")}>Send</button>;
}
使用状态管理库
如 Redux 或 MobX 全局管理状态。Redux 中通过 useSelector 获取状态,useDispatch 触发更新:
const count = useSelector(state => state.counter);
const dispatch = useDispatch();
dispatch(increment());






