material ui单选按钮组中的Reactjs不受控制的组件错误
Reactjs Uncontrolled component error in material ui radio button group
我是 ReactJS 的初学者。 material UI 关于我的组件单选按钮组的错误。我有一个值为布尔值的单选按钮。
当我试图点击我的单选按钮中的一个值时,它没有 select 但来自 onchange
函数的控制台日志被触发并且错误将显示如下:Material-UI:一个组件正在改变一个不受控制的RadioGroup初始化后的默认值状态。要抑制此警告,请选择使用受控 RadioGroup。
这是我的完整代码:
<Grid item>
<RadioGroup row aria-label="privateEntity" name="privateEntity" defaultValue={state.privateEntity} onChange={changePrivateEntity}>
<FormControlLabel value={true} disabled={requestType === 'PUT' || state.agency} control={<Radio color="primary" />} label="YES" />
<FormControlLabel value={false} disabled={requestType === 'PUT' || state.agency} control={<Radio color="primary" />} label="NO" />
</RadioGroup>
</Grid>
这是我的 onchange 函数:
const changePrivateEntity = (event, value) => {
event.persist();
// console.log(value);
let x = value === 'true' ? true : false;
setState((prev) => ({
...prev,
privateEntityDefined: true,
privateEntity: x,
inputErrors: {
...prev.inputErrors,
privateEntity: false,
},
inputHelpTexts: {
...prev.inputHelpTexts,
privateEntity: '',
},
}));
};
这是我的状态初始化:
const [state, setState] = useState({
privateEntity: selectedRecord ? selectedRecord.agency.private_entity : null,
privateEntityDefined: !!selectedRecord,
})
因为您没有为 RadioGroup
组件传递 value
,所以它会显示此警告:
只需将 defaultValue
更新为 value
value={state.privateEntity}
我是 ReactJS 的初学者。 material UI 关于我的组件单选按钮组的错误。我有一个值为布尔值的单选按钮。
当我试图点击我的单选按钮中的一个值时,它没有 select 但来自 onchange
函数的控制台日志被触发并且错误将显示如下:Material-UI:一个组件正在改变一个不受控制的RadioGroup初始化后的默认值状态。要抑制此警告,请选择使用受控 RadioGroup。
这是我的完整代码:
<Grid item>
<RadioGroup row aria-label="privateEntity" name="privateEntity" defaultValue={state.privateEntity} onChange={changePrivateEntity}>
<FormControlLabel value={true} disabled={requestType === 'PUT' || state.agency} control={<Radio color="primary" />} label="YES" />
<FormControlLabel value={false} disabled={requestType === 'PUT' || state.agency} control={<Radio color="primary" />} label="NO" />
</RadioGroup>
</Grid>
这是我的 onchange 函数:
const changePrivateEntity = (event, value) => {
event.persist();
// console.log(value);
let x = value === 'true' ? true : false;
setState((prev) => ({
...prev,
privateEntityDefined: true,
privateEntity: x,
inputErrors: {
...prev.inputErrors,
privateEntity: false,
},
inputHelpTexts: {
...prev.inputHelpTexts,
privateEntity: '',
},
}));
};
这是我的状态初始化:
const [state, setState] = useState({
privateEntity: selectedRecord ? selectedRecord.agency.private_entity : null,
privateEntityDefined: !!selectedRecord,
})
因为您没有为 RadioGroup
组件传递 value
,所以它会显示此警告:
只需将 defaultValue
更新为 value
value={state.privateEntity}