javascript - 如何在点击时替换当前的下拉项目
问题描述
我有一个包含一些项目的下拉列表,当我单击下拉列表上的按钮时,我正在尝试替换它们。我正在尝试menuItems
用newMenuItems
点击替换。这是我的代码
const [data, setData] = React.useState(menuItems);
const menuItems = [
{ value: 'pdf', label: t('dashboardAsPDF'), group: 'image' },
{ value: 'png', label: t('dashboardAsPNG'), group: 'image' },
{ value: 'ecsv', label: t('exportSelection'), group: 'csv' },
];
const newMenuItems = [
{ value: 'csv', label: t('facebookCSV'), group: 'csv' },
{ value: 'gcsv', label: t('googleAdsCSV'), group: 'csv' },
];
const handleCSV = () => {
//replace menu items logic goes here
};
return (
<div key={'ExportMenu'}>
{data.map((d: Item, index: number) => (
<StyledMenuItem value={d.value} selected={d.value === value} key={index}>
{d.value.toString().length > 1 ? (
<Label onClick={d.value === 'ecsv' ? () => handleCSV() : () => isCheckboxChecked(d.value.toString())}>{d.label}</Label>
) : (
<Label key={'label'}>{d.label}</Label>
)}
</StyledMenuItem>
))}
</div>
所以,我正在尝试将替换逻辑添加到handleCSV
函数中,但我不确定如何执行此操作。一个例子将不胜感激!
解决方案
您需要使用被useState
调用的第二个解构参数setData
,如下所示:
const handleCSV = () => {
setData(newMenuItems)
}
这将从data
变为menuItems
,newMenuItems
并且它将继续调用.map()
over ,newMenuItems
因为它现在存储在data
推荐阅读
- java - Spark:写入镶木地板文件时不理解的行为 - 数据类型
- flutter - 缩放不同屏幕尺寸的字体
- r - 发出时变异和大小写 - dplyr
- javascript - 单击 li 更改图片 - 简化 javascript 代码
- c# - 如何在 acumatica 上获取图像链接
- eclipse - 如何在 BIRT 中编辑报告单元格的行跨度?
- python - 我正在努力从 CSV 文件创建字典
- docker - Docker网络接口卡带宽限制?
- python - 如何防止精灵相互重叠
- azure-machine-learning-service - 作业提交失败:CondaHTTPError: HTTP 000 CONNECTION FAILED