Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在单击时替换当前下拉项_Javascript_Arrays_Reactjs - Fatal编程技术网

Javascript 如何在单击时替换当前下拉项

Javascript 如何在单击时替换当前下拉项,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有一个包含一些项目的下拉列表,当我单击下拉列表上的按钮时,我正在尝试替换它们。我试图在单击时将menuItems替换为newMenuItems。这是我的密码 const [data, setData] = React.useState(menuItems); const menuItems = [ { value: 'pdf', label: t('dashboardAsPDF'), group: 'image' }, { value: 'png', label: t('da

我有一个包含一些项目的下拉列表,当我单击下拉列表上的按钮时,我正在尝试替换它们。我试图在单击时将
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>
const[data,setData]=React.useState(menuItems);
常量菜单项=[
{value:'pdf',标签:t('dashboardAsPDF'),组:'image'},
{值:'png',标签:t('dashboardAsPNG'),组:'image'},
{值:'ecsv',标签:t('exportSelection'),组:'csv'},
];
常数newMenuItems=[
{值:'csv',标签:t('facebookCSV'),组:'csv'},
{值:'gcsv',标签:t('googleAdsCSV'),组:'csv'},
];
常量handleCSV=()=>{
//替换菜单项逻辑如下
};
返回(
{data.map((d:Item,index:number)=>(
{d.value.toString()。长度>1(
handleCSV():()=>isCheckboxChecked(d.value.toString())}>{d.label}
) : (
{d.label}
)}
))}

因此,我试图将替换逻辑添加到
handleCSV
函数中,但我不确定如何执行此操作。请举个例子!

您需要使用
useState
中的第二个解构参数
setData
,如下所示:

const handleCSV = () => {
  setData(newMenuItems)
}

这将把
数据
menuItems
更改为
newMenuItems
,并将继续调用
.map()
over
newMenuItems
因为它现在存储在
数据中

我有点困惑,需要用
newMenuItems
替换什么?
menuItems
?或者其他什么?是的,对不起,我已经更新了问题好了,现在有点清楚了,
数据。map
从哪里来?你从哪里得到
>数据
from?因为我想这是呈现项目的方式?更新后的问题,数据是状态,默认情况下是菜单项。我发誓我已经尝试过这种方式,但我想问题出在其他方面。谢谢!