我想在select中有一个默认选项,说"select your option".但我想禁用,这意味着用户一旦 Select 任何值,就不能 Select 它.

下面是一个示例:

function Select() {
    const [option, setOption] = useState();

    function handleOnChange(event) {
        setOption(event.target.value);
    }

    return (
        <select value={option} onChange={handleOnChange}>
            <option disabled>Select your option</option>
            {OPTIONS.map(value => (
                <option key={value} value={value}>{value}</option>
            ))}
        </select>
    );
}

但是如果我把disabledprops 添加到option,它会 Select 第一个未禁用的选项.应该调整什么以使其工作?

提前感谢

推荐答案

你需要做的是为你的useState和你的默认选项提供一个默认值,这样它就会被选中.这样地:

function Select() {
    const [option, setOption] = useState('');

    function handleOnChange(event) {
        setOption(event.target.value);
    }

    return (
        <select value={option} onChange={handleOnChange}>
            <option value='' disabled>Select your option</option>
            {OPTIONS.map(value => (
                <option key={value} value={value}>{value}</option>
            ))}
        </select>
    );
}

Reactjs相关问答推荐

关于同一位置的不同组件实例的react S规则被视为相同组件

是否在Extra Reducer完成作业(job)时触发createListenerMiddleware?

React:关于useEffect钩子如何工作的困惑

GoLang有条件地为.js.gz提供服务(如果它存在),否则为.js

在动态React组件中删除事件侦听器

在构建或部署Reaction应用程序时出错

GitHub页面配置

Gitlab CI和VITE环境变量出现问题

Next.js `getLayout` 函数没有被调用

Mui Datepicker 设置了错误的日期

修改React数据表扩展组件

如何将 DocuSign 控制台界面嵌入到 React 应用中

运行 npm run build 出现问题

React Three Fiber mesh 标签在此浏览器中无法识别

如何将值从下拉列表传递到 select 上的输入?响应式JS

react 测试显示错误的结果

如何在 React 中单击鼠标的位置动态添加 div?

在 redux 工具包中使用 dispatch 发送多个操作

如何使用 useEffect 和 if 语句 React

运行开发服务器时如何为 Vite 指定运行时目录