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

ReactJS中如何根据Select选项值切换对应Modal

解决方案:根据Select选项显示对应Modal

1. 添加状态存储选中类型

在现有状态逻辑中新增一个状态,用来保存用户选择的内容类型:

const [selectedType, setSelectedType] = useState('');

2. 给Select绑定 onChange 事件

修改第一个Modal里的<select>元素,添加onChange事件来实时更新选中值,同时给默认选项补上空value方便判断:

<select 
  className="form-select lm-border" 
  id="whatToAdd" 
  aria-label="Default select example"
  onChange={(e) => setSelectedType(e.target.value)}
>
  <option value="">Select</option>
  <option value="journalArticle">Journal Article</option>
  <option value="books">Books</option>
  <option value="caseLaw">Case Law</option>
  <option value="insights">Insights</option>
</select>

3. 修改Next按钮的点击逻辑

替换原有的addContributeBook函数,改为根据选中值判断要打开的Modal:

const handleNext = () => {
  setContribute(false); // 关闭第一个Modal
  switch(selectedType) {
    case 'books':
      setContributeBook(true);
      break;
    case 'insights':
      setContributeInsight(true);
      break;
    default:
      alert('Please select a valid option');
      setContribute(true); // 未选有效选项时重新打开第一个Modal
  }
};

同时把Next按钮的onClick替换成这个新函数:

<button className="btn-next" onClick={handleNext}>
  Next
</button>

4. 修正状态逻辑中的函数名(笔误修复)

你的代码里存在函数名不匹配的问题,统一修正如下:

const closeContributeBook = () => setContributeBook(false);
const closeContributeInsight = () => setContributeInsight(false);

完整修改后的状态逻辑

const [contribute, setContribute] = useState(false);
const [contributeBook, setContributeBook] = useState(false);
const [contributeInsight, setContributeInsight] = useState(false);
const [selectedType, setSelectedType] = useState('');

const closeContribute = () => setContribute(false);
const addContribute = () => setContribute(true);

const closeContributeBook = () => setContributeBook(false);
const closeContributeInsight = () => setContributeInsight(false);

const handleNext = () => {
  setContribute(false);
  switch(selectedType) {
    case 'books':
      setContributeBook(true);
      break;
    case 'insights':
      setContributeInsight(true);
      break;
    default:
      alert('Please select a valid option');
      setContribute(true);
  }
};

完成以上修改后,点击Next按钮时会根据用户选择的选项打开对应Modal,未选择有效选项时会弹出提示并保留第一个Modal。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:15:34