man*_*kur 10 javascript reactjs react-hooks
我在 react 中从我的 JSON 数据创建了一个 UI,我在其中创建了选项卡并在每个选项卡中嵌套了一些元素,这些元素工作正常。
我为每个选项卡都有一个删除按钮,因此当我单击删除时,它会删除该微粒选项卡。
我也在我的选项卡中嵌套元素,所以现在我试图通过单击相应的按钮来删除这些元素,但出现错误。
要创建新选项卡,我这样做:
const addNewTab = () => {
const name = window.prompt("Enter Name");
if (name) {
setData((data) => [...data, new Data(id, name)]);
}
};
Run Code Online (Sandbox Code Playgroud)
并在该选项卡内创建新元素:
const Create_element = () => {
const data_name = window.prompt("Enter Data Name");;
if (data_name ) {
setData((data) =>
data.map((el, i) =>
i === active_menu
? {
...el,
myData: [...el.myData, { data_name, }]
}
: el
)
);
}
};
Run Code Online (Sandbox Code Playgroud)
要删除选项卡:
setData((data) => data.filter((_, i) => i !== index));
const deleteData = (index) => {
console.log("delete", index);
setData((data) =>
data.map((dataItem, dataIndex) =>
dataIndex === active_menu
? {
...data[dataIndex],
myData: data[dataIndex].myData.filter((_, i) => index !== i)
}
: dataItem
)
);
};
Run Code Online (Sandbox Code Playgroud)
编辑/更新
我只想编辑选项卡的名称以及嵌套元素名称的名称。
代码沙箱我添加了删除功能,现在只想编辑每个选项卡内的选项卡名称和元素名称
编辑/更新
如何更新选项卡内特定元素的名称
创建 json 如下:
const tabJSON = {"home":"<element>","contact":"<element", ...}
Run Code Online (Sandbox Code Playgroud)
将其分配给 hooks 中的状态:
const [tab, setTab] = useState(tabJSON);
Run Code Online (Sandbox Code Playgroud)
onClick 传递密钥如下:
onClick={()=>handleClick(key)}
Run Code Online (Sandbox Code Playgroud)
在handle中单击更新选项卡
handleClick=param=>{
const updatedTab = {...tab};
if(param in tab){
delete updatedTab[param]; //remove updated tab and its content
}
setTab(updatedTab);
}
Run Code Online (Sandbox Code Playgroud)
对于更新选项卡:
const handlEditTab=(index,tabName)=>{
const newTabName = prompt(`Rename ${tabName}`);
/**
* here any layover form can be used or any condition also can be put for tab name
*/
if(tabName){
const newTabs = [...data];
const indexOfElement = newTabs.findIndex(obj=>obj.id===index);
newTabs[indexOfElement].name= newTabName;
setData(newTabs)
}
}
Run Code Online (Sandbox Code Playgroud)
在 JSX 中调用这个函数,如下所示:
...
<div onDoubleClick={()=>handlEditTab(li.id,li.name)} className="dashboard_name col-10 col-sm-10 col-md-9 col-lg-10 col-xl-10">
...
Run Code Online (Sandbox Code Playgroud)
这是工作示例。这里我采用了双击更新和单击选择的方式,大家可以根据需要进行相应的更新。
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |