반응형
React js의 함수에 인수를 전달하는 방법
알림 창에 사용자의 이메일을 표시하고 싶습니다.그러나 e-메일을 표시하는 인수로 전달하는 방법을 모릅니다.경보 방식또, 어느쪽도 사용할 수 없게 되어 있습니다.그래서 디스플레이를 할당해야 합니다.변수에 대해 경고하고 onClick에서 사용합니다.나는 왜 내가 직접 전화를 걸지 못하게 하는지 모르겠다.
class People extends React.Component{ render (){ var handleClick = this.displayAlert; var items = this.props.items.map(function(item) { return( <ul key = {item.id}> <li> <button onClick= {handleClick}>{item.lastName + ', ' + item.firstName}</button> </li> </ul> ) }); return (<div>{items}</div>); } displayAlert (){ alert('Hi'); } } class PersonList extends React.Component{ render () { return ( <div> <People items={this.props.people}/> /* People is an array of people*/ </div> ); } }
ES6의 방법:
화살표 기능 사용=>
const items = this.props.items.map((item) => (
<ul key={item.id}>
<li>
<button onClick={() => this.displayAlert(item.email)}>
{item.lastName + ', ' + item.firstName}
</button>
</li>
</ul>
));
onClick
어나니머스 함수가 호출되어 실행됩니다.this.displayAlert(item.email)
ES5의 방법:
이 작업은 매개 변수를 사용하여 수행할 수 있습니다.
너도 합격해야 해this
또는 bind를 사용하여 적절한 컨텍스트를 유지합니다..map
기능:
var items = this.props.items.map(function(item) {
return (
<ul key={item.id}>
<li>
<button onClick={this.displayAlert.bind(this, item.email)}>
{item.lastName + ', ' + item.firstName}
</button>
</li>
</ul>
);
}, this);
화살표 기능과 babel 플러그인 "transform-class-properties" 사용
class People extends React.Component {
render() {
return (
<ul>
{ this.props.items.map( (item) => (
<li key={item.id}>
<button onClick={this.displayAlert(item)}>
{item.lastName + ', ' + item.firstName}
</button>
</li>
))}
</ul>
)
}
displayAlert = (item) => (event) => {
// you can access the item object and the event object
alert('Hi');
}
}
언급URL : https://stackoverflow.com/questions/30608347/how-to-pass-arguments-to-functions-in-react-js
반응형
'code' 카테고리의 다른 글
useEffect에 비동기 함수를 추가한 후 오류가 발생함 (0) | 2023.03.19 |
---|---|
"유체" 내비게이션은 pjax가 사용 방법입니까? (0) | 2023.03.14 |
polylang을 사용할 때 워드프레스 페이지의 현재 언어를 확인하는 방법은 무엇입니까? (0) | 2023.03.14 |
리액트-라우터-돔 패스 소품을 컴포넌트에 리액트-라우터-돔 패스 (0) | 2023.03.14 |
p 태그 쇼트 코드의 내용 워드프레스 형식 지정 (0) | 2023.03.14 |