我正在ReactJs应用程序中处理表单。我想做什么:
1 /通过ID的草稿字母数组中的一个草稿字母//确定
2 /以下面的形式//显示所选草稿字母的标题,正文和位置
3 /,那么用户应该可以编辑所有字段//不正确!
这就是我所做的:
from django.utils.datastructures import MultiValueDictKeyError
try:
set_var = request.POST['myfield']
except MultiValueDictKeyError:
raise FieldDoesNotExist('Your field is not here.')
如果我使用class NewLetter extends Component {
constructor(props) {
super(props)
this.state = {
city: "",
title: "",
letterBody: "",
}
this.handleChange_city = this.handleChange_city.bind(this);
this.handleChange_letterBody = this.handleChange_letterBody.bind(this);
this.handleChange_title = this.handleChange_title.bind(this);
}
handleChange_city(e) {
this.setState({
city: e.target.value
});
}
handleChange_letterBody(e) {
this.setState({
title: e.target.value
});
}
handleChange_title(e) {
this.setState({
letterBody: e.target.value
});
}
render() {
return (
<form className="containerLetter">
<div className="form-group">
<input type="text" className="form-control" id="letterLocation" placeholder="where are you?" value={this.props.city} onChange={this.handleChange_city}/>
</div>
<div className="form-group">
<input type="text" className="form-control" id="letterTitle" placeholder="give a title to your letter" value={this.props.title} onChange={this.handleChange_title} />
</div>
<div className="form-group">
<textarea type="text" className="form-control" id="letterBody" placeholder="Letter content" value={this.props.letterBody} onChange={this.handleChange_letterBody} />
</div>
<button className="actionButton">Send the letter</button> <br />
<button className="actionButton">Save as draft</button>
</form>
)
}
}
export default NewLetter
,则这些字段不可编辑
如果我使用value
,则该字段是可编辑的,但是当defaultValue更改时,React不会重新渲染。值由父组件作为道具传递:
defaultValue
这似乎是一个众所周知的问题
这是我发现的: defaultValue change does not re-render input
React input defaultValue doesn't update with state
https://github.com/facebook/react/issues/4101
今天是否有解决此问题的方法?