【发布时间】:2019-03-06 03:19:19
【问题描述】:
我有一个简单的数组对象处于反应状态,三个人的 ID、姓名和年龄。我想使用输入更改名称。我有地图功能来呈现每个人的信息和下面的输入字段,我用输入字段更改人的名字。下面是我的代码
app.js
import React, {Component} from 'react';
import 'Person' from 'person';
class App extends Component {
state = {
persons: [
{ id: 'asfa1', name: 'Max', age: 28 },
{ id: 'vasdf1', name: 'Manu', age: 29 },
{ id: 'asdf11', name: 'Stephanie', age: 26 }
]
}
nameChangedHandler = ( event, id ) => {
const personIndex = this.state.persons.findIndex(p => {
return p.id === id;
});
const person = {
...this.state.persons[personIndex]
};
// const person = Object.assign({}, this.state.persons[personIndex]);
person.name = event.target.value;
const persons = [...this.state.persons];
persons[personIndex] = person;
this.setState( {persons: persons} );
}
render() {
let persons = null;
persons = (
<div>
{this.state.persons.map((person,index) =>{
return <Person key={person.name}
changed={(event) => this.nameChangedHandler(event, person.id)}
name={person.name}
age={person.age} />
})}
</div>
)
return (
<div>
{persons}
</div>
)
}
}
persons.js
import React from 'react';
function Person(props) {
return(
<div>
<p> Hello my name is {props.name} and age {props.age} </p>
<input type="text" onChange={props.changed} value = {props.name} />
</div>
)
}
export default Person
我面临的问题是,每次输入值时,我都必须通过单击或选择输入字段将值输入到输入字段中,并且状态正在为输入字段中更改的每个字符更新。我应该如何解决这个问题? .欢迎任何帮助我理解我的错误的想法,并提前致谢。希望我的问题可以理解。
【问题讨论】:
标签: reactjs dictionary state