veroneseWithS:
私は、複数の選択やっていると私は使用しています.find()
選択することがcheckedプロパティを持つのcheckbox
値が2列にあるとき。
これは私のリストの配列であります:
const permissionsGroupList = [
{ name: 'Seller' },
{ name: 'Admins' }
];
const [groupPermissions, setGroupPermissions] = useState([]);
<Select
labelId="mult-check-permissions"
id="demo-mutiple-checkbox"
multiple
label="Grupo de permissões"
onChange={handleChangeGroupPermissions}
value={groupPermissions}
input={<Input disableUnderline={true} />}
renderValue={selected => selected.join(", ")}
>
{permissionsGroupList.map(permissionGroup => (
<MenuItem key={permissionGroup.name} value={{ name: permissionGroup.name }}>
<Checkbox
checked={groupPermissions.find(
group => group.name === permissionGroup.name
)}
/>
<ListItemText primary={permissionGroup.name} />
</MenuItem>
))}
</Select>;
私の方法では.find()
、私が返すことができるか、検出されたオブジェクトを返すtrue/false
代わりに?ので、私はこのエラーを受けていますCheckbox
コンポーネントはブール値を期待します
index.js:1警告:失敗した小道具の種類:無効な小道具
checked
タイプのobject
に供給されForwardRef(Checkbox)
、期待されますboolean
。
norbitrial:
それが持つ値を返した場合は、検証することができます!!
。
たとえば、以下のように使用します:
<Checkbox checked={!!groupPermissions.find(
group => group.name === permissionGroup.name
)}
/>
以下について考えてみよう:
const data = [1,2,3];
const result1 = !!data.find(e => e === 17);
const result2 = !!data.find(e => e === 2);
console.log(result1); // not found
console.log(result2); // found
私はこのことができます願っています!