为什么我的 useState 数组没有被清空?
Why doesn't my useState array get emptied?
我的使用状态:
const [valuesToSearchFor, setValuesToSearchFor] = useState([]);
我有以下带有 onChange 的搜索输入字段:
onChange={() => {
setValuesToSearchFor(
valuesToSearchFor.includes(value)
? valuesToSearchFor.filter(val => val !== value)
: [...valuesToSearchFor, value]
);
}}
这会像这样更改我页面上的一些数据:
{data.elements.filter((val) => {
if(valuesToSearchFor.includes(val.name.toLowercase()){
return val
}
}
唯一的问题是当我删除输入字段时,它没有反映在数组中。
问题如何清空valUesToSearchFor
以便在输入中输入另一个搜索?
如果没有看到更多代码就很难说,但你应该解构过滤后的 valuesToSearchFor
。否则你正试图直接修改状态道具
onChange={(e) => {
const value = e.target.value;
setValuesToSearchFor(
valuesToSearchFor.includes(value)
? [...valuesToSearchFor.filter((val) => val !== value)]
: [...valuesToSearchFor, value]
);
}}
正如@Amiratak88 指出的那样,这将在每次击键时将一个新值推送到您的数组。
同样,不确定您要做什么,但您可以选择使用 update/reset 您的状态的按钮。
const MyComponent = () => {
const [searchValue, setSearchValue] = useState("");
const [valuesToSearchFor, setValuesToSearchFor] = useState([]);
return (
<>
<input
onChange={(e) => {
setSearchValue(e.target.value);
}}
/>
<button
onClick={(e) => {
e.preventDefault();
// update valuesToSearchFor with all unqiue values, including the current searchValue
setValuesToSearchFor([...new Set([...valuesToSearchFor, searchValue])]);
}}
>
Search
</button>
<button
onClick={(e) => {
e.preventDefault();
setValuesToSearchFor([]);
}}
>
Reset
</button>
</>
);
};
我的使用状态:
const [valuesToSearchFor, setValuesToSearchFor] = useState([]);
我有以下带有 onChange 的搜索输入字段:
onChange={() => {
setValuesToSearchFor(
valuesToSearchFor.includes(value)
? valuesToSearchFor.filter(val => val !== value)
: [...valuesToSearchFor, value]
);
}}
这会像这样更改我页面上的一些数据:
{data.elements.filter((val) => {
if(valuesToSearchFor.includes(val.name.toLowercase()){
return val
}
}
唯一的问题是当我删除输入字段时,它没有反映在数组中。
问题如何清空valUesToSearchFor
以便在输入中输入另一个搜索?
如果没有看到更多代码就很难说,但你应该解构过滤后的 valuesToSearchFor
。否则你正试图直接修改状态道具
onChange={(e) => {
const value = e.target.value;
setValuesToSearchFor(
valuesToSearchFor.includes(value)
? [...valuesToSearchFor.filter((val) => val !== value)]
: [...valuesToSearchFor, value]
);
}}
正如@Amiratak88 指出的那样,这将在每次击键时将一个新值推送到您的数组。
同样,不确定您要做什么,但您可以选择使用 update/reset 您的状态的按钮。
const MyComponent = () => {
const [searchValue, setSearchValue] = useState("");
const [valuesToSearchFor, setValuesToSearchFor] = useState([]);
return (
<>
<input
onChange={(e) => {
setSearchValue(e.target.value);
}}
/>
<button
onClick={(e) => {
e.preventDefault();
// update valuesToSearchFor with all unqiue values, including the current searchValue
setValuesToSearchFor([...new Set([...valuesToSearchFor, searchValue])]);
}}
>
Search
</button>
<button
onClick={(e) => {
e.preventDefault();
setValuesToSearchFor([]);
}}
>
Reset
</button>
</>
);
};