【问题标题】:React in tsx delete state value onClickReact in tsx delete state value onClick
【发布时间】:2022-01-03 11:21:24
【问题描述】:

我想过滤类别,如果我点击类别,我需要查看它们。如果我再次单击它们,我还需要删除它们。我将所有活动类别保存在一个状态中,并希望在再次单击它们后将其删除,现在我的问题是如何以最聪明的方式做到这一点? 状态:

const [activeCategories, setActiveCategories] = useState<string[]>([]);

function handleClick(catId: string) {
    setActiveCategories([...activeCategories, catId]);
}

使用 ActiveCategories 将获取活动 ID。

【问题讨论】:

    标签: reactjs material-ui tsx


    【解决方案1】:

    修改handleClick函数,检查catId是否存在。如果存在则删除它,如果它在 state 中不存在则添加它:

    function handleClick(catId: string) {
        if(activeCategories.findIndex(id => catId === id) >= 0){
            const updateState = activeCategories.filter(id => id !== catId)
            setActiveCategories(updateState);
        } else {
            setActiveCategories([...activeCategories, catId]);
        }
    }
    

    【讨论】:

    • 现在如果我记录 activeCategories 只有一个空数组
    • 你把你的日志语句放在handleClick函数中的什么位置?
    • 它现在对我有用,我将日志放在 handleclick 函数的末尾
    猜你喜欢
    • 2017-10-24
    • 2023-04-02
    • 2022-12-27
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2020-03-19
    • 2021-03-09
    • 2017-01-22
    相关资源
    最近更新 更多