代码之家  ›  专栏  ›  技术社区  ›  handsome

使用useState更新或创建元素

  •  0
  • handsome  · 技术社区  · 6 年前

    我想为id为2的元素设置active:false

    const [data, setData] = [{id: 1, active: true}, {id: 2, active: true}]
    const updatedData = {id: 2, active: false}
    setData((prevState) => [...prevState, ??]);
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ben    6 年前

    我会绘制数据如果 id updatedData

    setData((prevState) => {
        let contains = false;
        const newState = prevState.slice(0);
        for (let i = 0; i < newState.length; i++) {
            if (newState[i].id === updatedData.id) {
                newState[i] = updatedData;
                contains = true;
            }
        }
        if (!contains) {
            newState.push(updatedData);
        }
        return newState;
    });