【发布时间】:2019-03-11 18:49:38
【问题描述】:
我在将复选框设置为在加载时选中以始终由使用 ReactJS 的用户选中时遇到问题。我对反应还很陌生,现在我正在为这种事情苦苦挣扎。
我的代码是这样的
import DbCheckbox2 from 'modules/Checkbox-Checked'
const GenerateTemplateComponent = ({
handleSubmit,
handleCancel,
classes
}) => {
return (
<Form
onSubmit={handleSubmit}
validate={validate}
render={({ handleSubmit, invalid, pristine, form: { change } }) => (
<form className={classes.form} onSubmit={handleSubmit}>
<PanelBody>
<Grid container>
<Grid item xs={12} md={12}>
<Field
name='name'
component={DbInputField}
required
label={<FormattedMessage id='offre-name' />}
/>
</Grid>
<Grid container>
<Grid item xs={6} md={6}>
<Field
//className={classes.inputCheckbox}
name='section'
component={DbCheckbox2}
type='checkbox'
color='primary'
label={<FormattedMessage id='offre-section' />}
/>
</Grid>
而Checkbox-Checked文件是这样的
import React from 'react'
import FormControl from '@material-ui/core/FormControl'
import FormControlLabel from '@material-ui/core/FormControlLabel'
import Checkbox from '@material-ui/core/Checkbox'
const DbCheckbox2 = ({
label,
className,
checked=true,
value=true,
}) => (
<FormControl className={className} component="fieldset">
<FormControlLabel
control={
<Checkbox
checked={checked}
value={value}
/>
}
label={label}
/>
</FormControl>
)
export default DbCheckbox2
我尝试在字段属性上添加 value="true",并在 html 上得到一个 value="true",但是当我再次单击时,它确实让我得到了我想要的结果在复选框上,就像它第一次无法识别一样。也许他在等待 onclick 事件之类的,但我根本不明白。有什么帮助吗?
【问题讨论】:
-
你在应用程序的哪里设置初始状态,我想你只需要在状态中设置
checked: true并作为道具传递给DbCheckbox2 -
差不多了,用初始值解决,来回答问题。谢谢