Ich versuche, einige Funktionen zu implementieren, um Text zu bearbeiten.Reagieren: Verwenden? und: um eine Entscheidung zu treffen
Ich habe eine Liste von Objekten im Zustand. Wenn ich die Liste erzeuge, möchte ich prüfen, ob das Feld update
false
oder true
ist.
Ich weiß, dass ich wahrscheinlich ?
und :
verwenden sollte, um diese Entscheidung zu treffen, aber nicht sicher, wie man es implementiert.
function AddPerson(props) {
return(
<div>
<input type="text" value= {props.newPerson} onChange = {props.handleUpdate}/>
<button type="submit" onClick= {props.addNewFriend}> Add New </button>
</div>
)
}
function Person(props) {
return (
props.listOfPeople.map((person, i) => {
// this doesn't work
person['update']
? null
: return
(
<li key={i} onClick = {(e) => {props.handleEdit(e, person)}}>{person['name']}</li>
)
})
)
}
Was soll ich so ändern, dass, wenn es false zurückgibt, wird es die <li ..>
zurückkehren?
function ListPeople(props) {
return(
<div>
<ul>
<Person listOfPeople = {props.people} handleEdit = {props.edit}/>
</ul>
</div>
)
}
class App extends Component {
constructor(props) {
super(props)
this.state = {
newPerson: '',
people: [{name:'Eric', update: false} , {name:'Rick', update:false}, {name:'Yoni', update:false}]
};
this.handleUpdate = this.handleUpdate.bind(this)
this.addNewFriend = this.addNewFriend.bind(this)
this.handleEdit = this.handleEdit.bind(this)
}
handleUpdate(e) {
this.setState({newPerson: e.target.value})
}
addNewFriend(){
console.log(this.state.newPerson)
const newFriendList = this.state.people.slice()
this.setState(
{
newPerson: '',
people: newFriendList.concat({name:this.state.newPerson, update:false})
}
)
}
handleEdit(e, person) {
console.log(person)
return null
}
render() {
return (
<div>
<AddPerson handleUpdate = {this.handleUpdate} addNewFriend = {this.addNewFriend} newPerson = {this.state.newPerson} />
<ListPeople people = {this.state.people} edit={this.handleEdit} />
</div>
);
}
}
export default App;
FYI 'cond? whentrue: whenfalse' heißt ein [ternary] (https://en.wikipedia.org/wiki/%3F :). Ich würde auch vermeiden, einen über mehrere Zeilen zu verwenden, da es schwer zu lesen ist. –
danke! konnte die Dokumentation dazu nicht finden. –