代码之家  ›  专栏  ›  技术社区  ›  Jithin Varghese

从数组中删除值无效下一个.JS

  •  0
  • Jithin Varghese  · 技术社区  · 4 年前

    const [showFilter, setFilter] = useState([]);
    
    useEffect(() => {
        dispatch(fetchproducts(slug, sort, pageInitial+1, showFilter));
        console.log(showFilter);
    }, [showFilter]);
    
    function filterClick (id, title) {
        const index = showFilter.indexOf(id);
    
        if (index > -1)
            setFilter(showFilter.splice(index, 1));
        else
            setFilter(showFilter.concat(id));
    }
    
    return (
        <ul style={{display: showMe.includes(index) ? "block" : "none"}}>
            {item.items.map((single, index1) => (
                <li key={index1}>
                    <label><input type="checkbox" name="checkbox" onClick={(e) => filterClick(e.target.value, item.title)} value={single.items_id}/> {single.items_value}</label>
                </li>
            ))}
        </ul>
    )
    

    在上面的代码中,阵列插入正在工作,但是拼接不工作,状态没有更新。

    2 回复  |  直到 4 年前
        1
  •  1
  •   Ramil Garipov    4 年前

    你用 useEffect . 这个 的回调将在其中一个依赖项更改时触发。

    splice function 就地改变数组。在本例中,您的数组变量( showFilter )因此没有改变

    尝试使用 filter

    setFilter(showFilter.filter(el=> el !== id));
    
        2
  •  1
  •   ranjan_purbey    4 年前

    Splice 修改在React中不被认为是一个良好实践的原始数组。请使用 slice filter .

    使用slice您的代码如下所示:

    setFilter(showFilter.slice(index, index + 1))