gpt4 book ai didi

javascript - React - 使用通过数组迭代呈现的状态处理输入更改

转载 作者:行者123 更新时间:2023-11-29 21:07:57 25 4
gpt4 key购买 nike

这是我的代码...

    class Module extends Component {
constructor() {
super()

this.state = {
inputs: [
{ type: 'text', placeholder: 'placeholder text', name: 'text1', id: 'text1', value: 'aaa' },
{ type: 'text', placeholder: 'another placeholder text', name: 'text2', id: 'text2', value: '' },
{ type: 'text', placeholder: 'third placeholder text', name: 'text3', id: 'text3', value: '' },
]
}

this.handleInputChange = this.handleInputChange.bind(this)
this.saveModule = this.saveModule.bind(this)
}

handleInputChange(event) {
this.setState ({
[event.target.name]: event.target.value
})
}

renderInput = (input) => {
return(
<div key={ input.id }>
<input
type={ input.type }
name={ input.name }
placeholder={ input.placeholder }
onBlur={ this.saveModule }
value={ input.value }
onChange={ this.handleInputChange }
/>
</div>
)
}

render() {
return (
<div>
{ this.state.inputs.map(this.renderInput) }
</div>
)
}
}

export default Module

我如何处理以这种方式从状态呈现值的输入变化?!如果我有 {this.state.input.value} 它工作得很好,一旦我像这样重构它,setState 似乎不再达到它。

有什么想法吗? :)

提前致谢!

最佳答案

由于您想直接在创建 input 元素的 input array 中进行更改,因此您需要在 onChange< 中进行更改 方法。使用名称或索引等任何唯一属性 来标识哪个元素已更改,迭代输入数组 找到该输入元素,然后更新该元素的值。更新输入数组中的值后,也更新状态输入数组,当 react 重新渲染组件时,值将自动反射(reflect)在 UI 中。

检查工作代码:

class Module extends React.Component {
constructor() {
super()

this.state = {
inputs: [
{ type: 'text', placeholder: 'placeholder text', name: 'text1', id: 'text1', value: 'aaa' },
{ type: 'text', placeholder: 'another placeholder text', name: 'text2', id: 'text2', value: '' },
{ type: 'text', placeholder: 'third placeholder text', name: 'text3', id: 'text3', value: '' },
]
}

this.handleInputChange = this.handleInputChange.bind(this)
}

handleInputChange(event) {
let inputs = this.state.inputs.slice();
for(let i in inputs){
if(inputs[i].name == event.target.name){
inputs[i].value = event.target.value;
this.setState ({inputs});
break;
}
}
}

renderInput = (input, i) => {
return(
<div key={ input.id }>
<input
type={ input.type }
name={ input.name }
placeholder={ input.placeholder }
onBlur={ this.saveModule }
value={ input.value }
onChange={ this.handleInputChange }
/>
</div>
)
}

render() {
return (
<div>
{ this.state.inputs.map(this.renderInput) }
</div>
)
}
}


ReactDOM.render(<Module/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id='app'/>

关于javascript - React - 使用通过数组迭代呈现的状态处理输入更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com