【发布时间】:2018-03-12 12:31:00
【问题描述】:
我希望能够在用户单击表单时获得个人。我尝试将事件处理程序添加到代码的返回部分,但我需要在 Person 类中实现类似 onClick={props.click}
import * as React from 'react';
import { RouteComponentProps } from 'react-router';
interface HelloWorldI {
persons: ReadonlyArray<PersonI>,
showPersons: boolean
}
interface PersonI {
name: string,
age: number,
}
export default class HelloWorld extends React.Component<{}, HelloWorldI> {
constructor(props:any) {
super(props)
const p: ReadonlyArray<PersonI> = [
{ name: 'Max', age: 28},
{ name: 'Max', age: 28 },
]
this.state = {
persons: p,
showPersons: false
}
}
deletePersonHandler = (personIndex:any) => {
const persons = this.state.persons;
persons.slice(personIndex, 1);
this.setState({ persons: persons });
}
togglePersonsHandler = () => {
const doesShow:any = this.state.showPersons;
this.setState({ showPersons: !doesShow });
}
public render() {
let persons = null;
if (this.state.showPersons) {
persons = (
<div>
{this.state.persons.map((person,index) => {
return <Person
onClick={this.deletePersonHandler(index)}
name={person.name}
age={person.age} />
})}
</div>
);
}
return (
<div>
<button onClick={this.togglePersonsHandler}></button>
{persons}
</div>
)
}
}
class Person extends React.Component<{ name: string, age: number }, {}> {
render() {
return (
<div>
<p> {this.props.name} and {this.props.age} </p>)
</div>
)
}
}
谢谢。
【问题讨论】:
-
这很容易做到。如果其他人没有先得到答案,我会尽快发布答案。
标签: reactjs typescript