reactjs - 如何为动态创建的输入元素设置状态
问题描述
我正在使用 document.createElement 创建一个输入元素并设置属性。我想要一个 onchange 事件来更新状态。我该如何进行?以下是我的代码
addoffers = () => {
var input = document.createElement("input");
input.setAttribute('name', 'whatweoffer'.concat(Math.floor((Math.random() * 1000) + 1)));
input.setAttribute('class','form-control mb-3');
input.setAttribute('placeholder','what we offer');
input.onchange = this.handleChange;
var parent = document.getElementById("offerinput");
parent.appendChild(input);
}
handleChange = (e) => {
this.setState({ [e.target.name]: e.target.value });
console.log(e.target.value);
}
<input type="text" className="form-control mb-3" id='whatweoffer' name='whatweoffer' onChange={this.handleChange} placeholder='what we offer' required />
解决方案
试试这个
class DynamicInputs {
constructor(props) {
super(props);
this.state = {
inputs : []
}
}
render() {
return (
<React.Fragment>
{
this.state.inputs.map(inputValue =>{
<input key= {inputValue} type="text" placeholder="what we offer" className="form-control mb-3" name = {`whatweoffer${inputValue}`} onChange = {this.handleChange} required/> })
}
</React.Fragment>
)
}
handleChange = (e) => {
this.setState({ [e.target.name]: e.target.value });
console.log(e.target.value);
}
addInput() = () =>{
let {inputs} = this.state;
inputs.push((Math.floor((Math.random() * 1000) + 1))
this.setState({
inputs
})
}
}
推荐阅读
- python - 如何在 Django Rest Framework 中将 Python 日期时间对象转换为特定时区?
- r - 如何计算均值比例的置信区间
- angular - ng build ang-lib 不会创建资产文件夹,也不会编译 Scss 文件
- google-maps - Dart 中带有 google_maps_flutter 的 GestureDetector
- javascript - 元素 UI 选择项未动态设置值
- python - 我怎样才能加快这个功能
- powershell - 重命名文件 - 删除第二个下划线之后的所有字符
- python - 如何将多行结果(具有不同键的 OrderedDict)打包到 pandas 数据框中?
- python - 在 Python 中使用自定义 Matlab 函数时,类型为“uint8”的输入参数的未定义函数“fun_name”
- ehcache - Ehcache 3:正在写入的键是否被锁定?