javascript - 如何从下拉列表本身重置选择中的项目
问题描述
我想从下拉列表本身中清除/删除/重置选择选项,而不是从外部按钮或allowClear
假设选择选项中的垃圾桶图标将重置所有值:
但是,我非常坚持如何使用我当前的以下代码重置值:
import st from "./AddToCartDropdown.module.css";
import {useState} from 'react';
import { Select } from 'antd';
import { DeleteFilled } from '@ant-design/icons';
const { Option } = Select;
function loopStock(n, selectedIndex){
var elements = [];
for(let i = 1; i <= n; i++){
const qty = new String(i);
const resultQty = qty.concat(" in cart");
elements.push(<Option value={i}> <span className={st.addToCartSelect}> {i === selectedIndex ? resultQty : i} </span></Option>);
}
return elements;
}
const AddToCart = () => {
const [selectedIndex, setSelectedIndex] = useState(-1);
const onChange = (newSelectedIndex) => {
setSelectedIndex(newSelectedIndex);
}
return (
<div >
<Select defaultValue="Add to Cart" onChange={onChange} className={st.addToCartDefault} bordered={false}>
<Option value="delete"> <DeleteFilled /> </Option>
{loopStock(5, selectedIndex)}
</Select>
</div>
);
};
export default AddToCart;
当我选择垃圾桶图标时,它应该显示我Add to Cart
而不是垃圾桶图标:
问题是我很困惑在选择垃圾桶图标后如何设置状态以重置所有选项并返回到Add to Cart
默认值Select
。
我是 React/JavaScript 的新手,还在学习。在搜索了所有解决方案之后,我认为最好在这里创建我自己的问题。谢谢!
解决方案
controlled
您可以通过传递 value prop 并具有状态来将您的选择作为组件。将初始状态设置为null
代替,-1
以便我们可以使用占位符。
const [selectedIndex, setSelectedIndex] = React.useState(null);
when the selected value is delete
we are setting the state tonull
const onChange = (newSelectedIndex) => {
if(newSelectedIndex === 'delete'){
setSelectedIndex(null)
}else {
setSelectedIndex(newSelectedIndex)
}
}
现在在您的选择中添加value
and道具。placeholder
<Select placeholder="Add to Cart" value={selectedIndex} onChange={onChange} bordered={false}>
<Option value="delete"> <DeleteFilled /> </Option>
{loopStock(5, selectedIndex)}
</Select>
推荐阅读
- webpack - 如何在带有 HTML Webpack 插件的 webpack 构建中包含多个 favicon?
- python - 调用`async for in`后如何获得异步生成器的下一次迭代
- javascript - Sequelize如何添加自定义排序功能?
- wpf - 根据屏幕上的窗口位置交换垂直滚动条边
- gatsby - Netlify:未能索引到 Algolia
- python - 我想从选项中的文本键中获取数据我被困了一个小时有人可以帮助我吗
- dafny - 如何证明将集合转换为序列并返回是dafny中的一个身份
- android - 使用 FirebaseUI 将子集合中的数据放入第二个布局中
- node.js - Socket:当房间中的玩家关闭浏览器时,服务器如何正确地发射到该房间中的其他套接字?
- javascript - 如何获取自定义元素的内容