如何使用reactjs中的循环设置数组中对象的状态

rdlzhqv9  于 2022-12-12  发布在  React
关注(0)|答案(2)|浏览(159)

我在项目中使用循环设置数组中对象的状态时遇到了一个问题。当我循环数据时,只有一组对象。
这是我密码

const {role} = usePage().props
const { data, setData, put, processing, errors, reset } = useForm({
    name: role.name || '',
    permissions: []

})

const setUncheckPermissions = () => {
    const temp = props.permissions.map((permission) => {
        return permission['name']
    })

    if(props.permissions.length > role.permissions.length){
        for(let i=0; i < temp.length; i++){
            setData("permissions", [{name:temp[i],isChecked:false}]); // only set one of them 
        }

        return console.log('all good')
    }

    return console.log('Maybe problems happen')

}

请给予我一些线索或提示或更好术语来解决这个问题。2提前感谢

piah890a

piah890a1#

setData("permissions", temp.map(it => ({name: it, isChecked: false})))
dsekswqp

dsekswqp2#

您似乎将属性isChecked: falseMap到每个权限对象
为此,您只需使用map函数一次,然后设置整个权限的状态。
不需要Map一次来取出name属性并循环通过它来设置isChecked属性。所有这些都可以一次完成。此外,在循环中调用setData将使组件在每次迭代时重新呈现,这是不希望的。
只需执行以下操作:

const setUncheckPermissions = () => {
    if(props.permissions.length > role.permissions.length){
        const uncheckedPermissions = props.permissions.map((permission) => {
            return {name: permission.name, isChecked: false};
        })
        setData("permissions", uncheckedPermissions);
    }
}

相关问题