You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.js中点击按钮后如何设置并调用props?

你需要在App组件中引入状态管理跟踪加入请求的审核状态,将状态作为props传递给Room组件,点击按钮时触发状态更新,同步到Room组件即可实现需求,完整修改如下:

第一步:修改App.js

首先引入React的useState Hook管理加入状态,点击按钮时触发状态变更:

import { useState } from 'react';
import { Button, Link } from '@mui/material'; // 用到的组件提前导入
import Room from './Room';

function App() {
  // 三个状态:idle=未发起请求 / waiting=等待审核 / joined=已通过
  const [joinStatus, setJoinStatus] = useState('idle');
  // 通知moderator有用户申请加入的逻辑
  const handleJoinRequest = () => {
    setJoinStatus('waiting');
    // 这里替换为真实的接口请求/websocket监听,等moderator同意后触发setJoinStatus('joined')
    // 下方为模拟moderator3秒后同意请求的逻辑,可删除替换为真实业务
    setTimeout(() => {
      setJoinStatus('joined');
    }, 3000)
  }

  return (
    <div className="App">
      <h1>Props</h1>
      <Room name={joinStatus} />
      <Button 
        variant="contained" 
        color="primary" 
        onClick={handleJoinRequest}
        // 只有审核通过后才允许跳转,也可以根据业务逻辑提前跳转后在Room页处理等待逻辑
        component={joinStatus === 'joined' ? Link : 'button'} 
        to={joinStatus === 'joined' ? `/${data}` : '#'}
      >
        Join Room
      </Button>
    </div>
  );
}

export default App;

第二步:修改Room.js

接收传递的name属性,根据不同状态渲染对应内容即可:

function Room(props){
    if(props.name == "joined"){
        console.log("Accept")
        return <div>已成功进入房间</div>
    } else if(props.name == "waiting"){
        console.log("Wait")
        return <div>正在等待主持人审核,请稍候</div>
    } else {
        return <div>请点击加入房间按钮申请进入</div>
    }
}

export default Room;
  • 如果你需要点击按钮后先跳转到Room页面再等待审核,只需要把状态管理逻辑移到Room组件,在Room组件挂载时发起加入请求即可
  • 真实业务中可删除模拟同意的setTimeout逻辑,对接后端审核回调或者websocket推送,收到moderator同意的通知后再修改状态即可

内容的提问来源于stack exchange,提问作者Summer Winter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 01:18:03