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

React下拉框选中值无法展示到search_box div问题排查

你的代码存在3处核心错误,逐一说明:

  • 第一处:下拉选项点击事件的传参错误。你当前写的onClick={val => onSelect(val)}中,val是浏览器原生的点击事件对象,不是你需要的地区名称,所以dropDownValue实际被赋值为事件对象,不是预期的字符串,需要在点击时直接传入当前遍历到的countries.name作为参数。
  • 第二处:search_box容器的文本是硬编码的,没有和dropDownValue状态绑定,所以即使状态更新,展示内容也不会变化。
  • 第三处:控制台打印代码放在了JSX的遍历逻辑中,会在每次组件渲染时执行,不是点击选项时触发,所以无法正确打印选中后的值。

修正后的完整代码如下:

import React, { useState } from "react";
import './search.css';
import { IoMdArrowDropdown } from 'react-icons/io';
import { GoTriangleUp } from 'react-icons/go';
import data from '../../../../data.json';

const SearchBox = () => {
    const [open, setOpen] = useState(false);
    const [dropDownValue, setDropDownValue] = useState(null);

    const onSelect = (value) => {
        setDropDownValue(value);
        setOpen(!open);
        // 需要排查选中值可以在这里打印
        console.log('选中的地区:', value)
    };

    return (
        <div className="box_district">
            <div className="district_caption">District</div>
            <div className="block_drop">
                <div className="district_dropdown">
                    {/* 绑定状态,未选中时显示默认提示 */}
                    <div className="search_box">
                        {dropDownValue || "Enter District"}
                    </div>
                    <div className="drop_icon" onClick={() => setOpen(prev => !prev)}>
                        {open ? <GoTriangleUp size={"22px"} /> : <IoMdArrowDropdown size={"30px"} />}
                    </div>
                </div>
                <div className={open ? "open_options" : "options"}>
                    {data.map((countries) => (
                        <div 
                            className="select_options" 
                            key={countries.name} // 新增key避免React列表遍历警告
                            onClick={() => onSelect(countries.name)} // 直接传入当前遍历的地区名
                        >
                            {countries.name}
                        </div>
                    ))}
                </div>
            </div>
        </div>
    );
}

export default SearchBox;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:45:03