Javascript 如何在每次渲染之前重置UseEffect中的数据?
情况是这样的。 我使用Javascript 如何在每次渲染之前重置UseEffect中的数据?,javascript,reactjs,ecmascript-6,react-hooks,ecmascript-2016,Javascript,Reactjs,Ecmascript 6,React Hooks,Ecmascript 2016,情况是这样的。 我使用useffect过滤一些数据,效果很好。 这是代码和密码 现在我输入a,结果变成 asr -> 20 问题是,当我删除a时,我想要一个 asr -> 20 plo -> 30 我知道结果正在被削减,但我如何才能做到这一点 我认为它应该搜索是否有任何过滤器(复选框和关键字)已经用非常原始的数据进行了更改 所以我在useffecthooks的一开始就尝试了这个 setResult(data) 但不幸的是,它没有像我预期的那样起作用 感谢您的帮助 首先只
useffect
过滤一些数据,效果很好。
这是代码和密码
现在我输入a
,结果变成
asr -> 20
问题是,当我删除a
时,我想要一个
asr -> 20
plo -> 30
我知道结果正在被削减,但我如何才能做到这一点
我认为它应该搜索是否有任何过滤器(复选框和关键字)已经用非常原始的数据进行了更改
所以我在useffect
hooks的一开始就尝试了这个
setResult(data)
但不幸的是,它没有像我预期的那样起作用
感谢您的帮助 首先只需对完整数据运行过滤器即可
仅使用三个筛选规则中的筛选数据设置结果
let filteredResult = data.filter(
item =>
(!isAged || item.age >= 20) &&
(!isNameLength3 || item.name.length === 3) &&
(!keyword || item.name.toLowerCase().includes(keyword.toLowerCase()))
);
setResult(filteredResult);
首先只需对完整数据运行过滤器即可
仅使用三个筛选规则中的筛选数据设置结果
let filteredResult = data.filter(
item =>
(!isAged || item.age >= 20) &&
(!isNameLength3 || item.name.length === 3) &&
(!keyword || item.name.toLowerCase().includes(keyword.toLowerCase()))
);
setResult(filteredResult);
由于您的数据
变量在您的应用程序
之外,您只需将结果
替换为应用程序
中的数据
,因此每次您都使用原始数据计算最终结果。由于数据
变量在您的应用程序
之外,您可以在useffect
中用数据
替换所有结果
,因此每次使用原始数据计算最终结果时,都应该这样做!:)@SPG很高兴能为您提供帮助!这应该可以做到!:)@SPG很高兴能为您提供帮助!
let filteredResult = data.filter(
item =>
(!isAged || item.age >= 20) &&
(!isNameLength3 || item.name.length === 3) &&
(!keyword || item.name.toLowerCase().includes(keyword.toLowerCase()))
);
setResult(filteredResult);