我可以成功地将输入的值和判断状态添加到状态数组中,所以当我单击输入时,值和判断状态被推送到数组中,当我再次单击它时,来自该特定输入的值和判断状态被从数组中取出.

我遇到的问题是,如果我转到下一步/组件,然后返回,我试图让我的输入设置为基于它是否已经在状态数组中的判断状态.

有三个输入,它们默认为未选中.我将点击#1和#3,点击Next按钮,转到下一步,点击Back按钮,现在所有三个输入都回到未选中状态,即使状态中仍然有#1和#3.我希望1号和3号显示为选中状态.

const [addon, setAddon] = useState([]); //This is in another file

function AddOns({ addon, setAddon }) {
    const checkHandler = (e) => {
        if (e.target.checked === true) {
            setAddon([
                ...addon,
                { value: e.target.value, checked: e.target.checked },
            ]);
        }

        if (e.target.checked === false) {
            const nextAddon = addon.filter((a) => a.value !== e.target.value);
            setAddon(nextAddon);
        }
    };
                <Input
                    value="Online service"
                    dataAmount="+$1/mo"
                    dataNumber="1"
                    // checked={}
                    addonDetail="Access to multiplayer games"
                    onClick={(e) => checkHandler(e)}
                />
                {/* <!-- Add on --> */}
                <Input
                    value="Larger storage"
                    dataAmount="+$2/mo"
                    dataNumber="2"
                    // checked={}
                    addonDetail="Extra 1TB of cloud save"
                    onClick={(e) => checkHandler(e)}
                />
                {/* <!-- Add on --> */}
                <Input
                    value="Customizable profile"
                    dataAmount="+$2/mo"
                    dataNumber="2"
                    // checked={}
                    addonDetail=" Custome theme on your profile"
                    onClick={(e) => checkHandler(e)}
                />

我想也许可以循环遍历状态数组以将数组值与输入值匹配,如果匹配则取出选中的状态,但我在这方面并不成功.我还设法将Checked属性设置为,如果状态数组中有一个Checked状态为真,但它会将所有三个输入都设置为Checked,而不是特定输入.

推荐答案

您可以使用Array#some来判断是否匹配.

<Input value="Online service"
       checked={addon.some(a => a.value === "Online service")} 
       // other props...
/>

Javascript相关问答推荐

是什么原因导致此Angular 16应用程序中类型错误时属性结果不存在?

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

基于变量切换隐藏文本

useNavigation更改URL,但不呈现或显示组件

Msgraph用户邀请自定义邮箱模板

加载背景图像时同步旋转不显示的问题

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

如何在Angular17 APP中全局设置AXIOS

material UI按钮组样式props 不反射

更新动态数据中对象或数组中的所有值字符串

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

第三方包不需要NODE_MODULES文件夹就可以工作吗?

当用户点击保存按钮时,如何实现任务的更改?

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

postman 预请求中的hmac/sha256内标识-从js示例转换

正则表达式以确定给定文本是否不只包含邮箱字符串

ReactJS在类组件中更新上下文

使用jQuery每隔几秒钟突出显示列表中的不同单词

如何将缓冲区数组转换回音频

Html/JS:如何在脚本执行前阻止呈现?