Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何在react中清空数组?_Javascript_Arrays_Reactjs - Fatal编程技术网

Javascript 如何在react中清空数组?

Javascript 如何在react中清空数组?,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,如上所述,如何清空数组?我尝试使用useState像这样设置数组setArray([]),但实际上无法正常工作,因为有时数组没有完全重置,是否有其他方法清空它 代码: 首先,不需要调用setArray([])当您的最终目标是将数组的值更改为从函数传递下来的值时 它可能不会不时更新的原因是,虚拟DOM根本没有看到任何更改,或者您没有正确地迭代它们 如果要使用useState更改数组的值,并在其上循环并返回组件,请确保始终设置元素的key属性,该属性应设置为唯一标识符,以便虚拟DOM可以正常工作。有

如上所述,如何清空数组?我尝试使用
useState
像这样设置数组
setArray([])
,但实际上无法正常工作,因为有时数组没有完全重置,是否有其他方法清空它

代码:


首先,不需要调用
setArray([])
当您的最终目标是将数组的值更改为从函数传递下来的
值时

它可能不会不时更新的原因是,虚拟DOM根本没有看到任何更改,或者您没有正确地迭代它们

如果要使用
useState
更改数组的值,并在其上循环并返回组件,请确保始终设置元素的
key
属性,该属性应设置为唯一标识符,以便虚拟DOM可以正常工作。有关更多信息,请阅读React文档:

要回答有关清除数组的问题:可以通过将变量设置为
null
来清除数组

let exampleArray = ['a', 'b', 'c'];
console.log(exampleArray);
exampleArray = null;
console.log(exampleArray);

请注意,如果使用的是
useState
hook,则可能需要几个周期才能在渲染输出中看到更改,因为它是异步执行的

如果想知道状态何时实际更新,可以使用
useffect
钩子并传递(数组)变量,以便在状态更新时触发:

import React, {useState, useEffect} from 'react';

const Example = () => {
    const [exampleArray, setExampleArray] = useState(['a', 'b', 'c']);

    const handleClick = (e) => {
        setExampleArray(null);
    };

    useEffect(() => {
        console.log(exampleArray);
    }, [exampleArray]);

    return (
        <button onClick={handleClick}>Test</button>
    );

};

export default Example;
import React,{useState,useffect}来自“React”;
常量示例=()=>{
const[exampleArray,setExampleArray]=useState(['a','b','c']);
常量handleClick=(e)=>{
setExampleArray(空);
};
useffect(()=>{
log(例如数组);
},[示例数组];
返回(
试验
);
};
导出默认示例;

有关更多信息,请查看React文档:

使用spread操作符,无需重置即可执行此操作

const [array, setArray] = useState([]);
const functionName = (value) => {
    setArray([...value]);
}

选中此选项:
setArray([])
肯定会将数组设置为空数组。为什么要在它后面调用
setArray([value])
?因为每次用户选择一个选项时,我都想在数组中插入新值,所以数组在重置后会有新值
const [array, setArray] = useState([]);
const functionName = (value) => {
    setArray([...value]);
}