我努力寻找答案,但失败了。请帮帮我.
首先,一个工作实例
this.state = {
module:'',
description: '',
status: '',
redirectToModule: false,
error: ''
}
-----------------
handleChange = name => event => {
this.setState({[name]: event.target.value})
}
Render section has
<TextField id="name" label="Module Name" className={classes.textField} value={this.state.module} onChange={this.handleChange('module')} margin="normal"/><br/>
<TextField id="description" type="text" label="Description" className={classes.textField} value={this.state.description} onChange={this.handleChange('description')} margin="normal"/><br/>
<TextField id="status" type="text" label="Status" className={classes.textField} value={this.state.status} onChange={this.handleChange('status')} margin="normal"/>
this.state = {
module: {
module: '',
description: '',
status: ''
},
redirectToModule: false,
error: ''
}
例如,我想我应该在onchange={this.handlechange('')}中提到'module.status'而不是'module',但是
我应该改变函数handleChange吗?
This.SetState({module.[name]:event.target.value});
正确的方法应该是什么?
请帮帮我.我是一个新的反应,但我在短时间内掌握了很多。坦率地说,我还是个新手。
整个文件如下…没有导入和样式部分
class EditModule extends Component {
constructor({match}) {
super();
// this.state = {
// module: '',
// description: '',
// status: '',
// roles:[],
// redirectToModule: false,
// error: ''
// }
this.state = {
module: {
module: '',
description: '',
status: '',
roles:[]
},
redirectToModule: false,
error: ''
}
this.match = match
}
componentDidMount = () => {
read({
moduleId: this.match.params.moduleId
}).then((data) => {
if (data.error) {
this.setState({error: data.error});
} else {
this.setState({
module: {
module: data.module,
description: data.description,
status: data.status,
roles: data.roles
}
});
}
})
};
clickSubmit = () => {
const module = {
module: this.state.module || undefined,
description: this.state.description || undefined,
status: this.state.status || undefined,
roles: this.state.roles || undefined
}
update({moduleId: this.match.params.moduleId}, module)
.then((data) => {
if (data.error) {
this.setState({error: data.error})
} else {
this.setState({'moduleId': data._id, 'redirectToModule': true});
}
}
);
};
handleChange = name => event => {
this.setState( { module: JSON.stringify( { [name]: event.target.value } ) } )
};
render() {
const {classes} = this.props
if (this.state.redirectToModule) {
return (<Redirect to={'/module/' + this.state.moduleId}/>)
}
return (
<Card className={classes.card}>
<CardContent>
<Typography type="headline" component="h2" className={classes.title}>
Edit Module
</Typography>
<TextField id="name" label="Module Name" className={classes.textField} value={this.state.module.module} onChange={this.handleChange('module')} margin="normal"/><br/>
<TextField id="description" type="text" label="Description" className={classes.textField} value={this.state.module.description} onChange={this.handleChange('description')} margin="normal"/><br/>
<TextField id="status" type="text" label="Status" className={classes.textField} value={this.state.module.status} onChange={this.handleChange('status')} margin="normal"/>
<br/> {
this.state.error && (<Typography component="p" color="error">
<Icon color="error" className={classes.error}>error</Icon>
{this.state.error}
</Typography>)
}
</CardContent>
<CardActions>
<Button color="primary" variant="raised" onClick={this.clickSubmit} className={classes.submit}>Submit</Button>
</CardActions>
</Card>
)
}
}
EditModule.propTypes = {
classes: PropTypes.object.isRequired
}
export default withStyles(styles)(EditModule)
@Avinash
请像这样更改您的handleChange功能。
handleChange = name => event => {
this.setState({module[name]: event.target.value})
}
对于我正在使用的插件,我必须具有如下状态: 如何在不设置其余访问权限的情况下设置hospital_id状态? 这似乎删除了一切,但hospital_id:
问题内容: 用语言很难解释这种情况,让我举一个例子: 如何在JavaScript对象中设置具有变量值的变量属性? 问题答案: 那应该工作。您混合了变量的名称及其值。但是用字符串索引对象以获取其属性可以在JavaScript中很好地工作。
如何使用材质设计将按钮放置在图中所示的位置? 这是index.html模板上的代码。 这是材质设计的css样式。 Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eusmod tempor incidunt ut labore et dolore magna aliqua.Ut enim ad minim veniam,
我想测试一个组件,它包含条件渲染。因此,如果一个状态为true,那么JSX-HTML应该呈现,如果不是false的话。 如果我想使用Jest、Enyzme、React测试库来测试这一点,我应该如何继续? 我有一个组件,它的实现细节对这个主题并不重要。请注意,它包含 对于我的测试,我想把它设置为真。
我想知道是否有一种方法可以使用useState()更新React中的嵌套对象状态
问题内容: 对于我正在使用的插件,我必须具有如下所示的状态: 我如何在不设置其余访问权限的情况下设置hospital_id的状态? 这似乎删除了除了hospital_id之外的所有内容: 问题答案: 您有几种选择: 借助ECMA6,您可以使用对象传播建议()创建具有更新属性的对象的副本。 您可以在对象()上使用本机分配功能 或为最短的版本和原子更新: 还有一个选项是更新插件: 我建议使用第一个。