【发布时间】:2021-03-24 08:01:15
【问题描述】:
我有一个用户输入。
根据该输入,我需要过滤一组选项。
我已经能够提交数据,我现在在我的handleSubmitData 函数中,我正在编写if 条件,然后应该将过滤后的结果数组返回到屏幕,但是这并没有发生。它必须与范围有关,但是我似乎无法弄清楚出了什么问题。这是代码。任何指导都会有所帮助
const Container = () => {
const [cards, setCards] = useState([
"studentCard",
"anywhereCard",
"liquidCard",
]);
const handleSubmitData = (userInput) => {
const { employmentStatus } = userInput.state;
const { earnings } = userInput.state;
if (employmentStatus === "student" && earnings < 16000) {
return cards.filter((card) => card !== "liquidCard");
}
if (employmentStatus === "student" && earnings >= 16000) {
return cards;
}
return cards;
};
return (
<div className="Container">
<UserInputForm submitData={handleSubmitData} />
{cards}
</div>
);
};
export default Container;
我已将cards 放入组件的render return 部分,但没有任何反应,没有过滤卡..
【问题讨论】:
-
cards是一个状态对象,因此如果您想查看结果,您需要使用setCards更新它。请注意此处的突变,您可能需要第二个状态数组来保存过滤后的结果,以便您可以返回到未过滤的状态。 -
非常感谢您的解释@pilchard,这是有道理的
标签: javascript arrays reactjs filter scope