728x90
반응형
질문 : React js onClick이 메소드에 값을 전달할 수 없습니다.
onClick 이벤트 값 속성을 읽고 싶습니다. 하지만 클릭하면 콘솔에 다음과 같은 내용이 표시됩니다.
SyntheticMouseEvent {dispatchConfig: Object, dispatchMarker: ".1.1.0.2.0.0:1", nativeEvent: MouseEvent, type: "click", target
내 코드가 올바르게 작동합니다. 실행할 때 {column}
볼 수 있지만 onClick 이벤트에서는 가져올 수 없습니다.
내 코드 :
var HeaderRows = React.createClass({
handleSort: function(value) {
console.log(value);
},
render: function () {
var that = this;
return(
<tr>
{this.props.defaultColumns.map(function (column) {
return (
<th value={column} onClick={that.handleSort} >{column}</th>
);
})}
{this.props.externalColumns.map(function (column) {
// Multi dimension array - 0 is column name
var externalColumnName = column[0];
return ( <th>{externalColumnName}</th>);
})}
</tr>
);
}
});
React js onClick
이벤트에 값을 어떻게 전달할 수 있습니까?
답변
쉬운 방법 :
화살표 기능 사용 :
return (
<th value={column} onClick={() => this.handleSort(column)}>{column}</th>
);
그러면 올바른 매개 변수를 사용하여 handleSort
를 호출하는 새 함수가 생성됩니다.
더 나은 방법 :
하위 구성 요소로 추출하십시오. 렌더링 호출에서 화살표 함수를 사용할 때의 문제는 매번 새 함수를 생성하여 불필요한 다시 렌더링을 유발한다는 것입니다.
하위 구성 요소를 생성하는 경우 핸들러를 전달하고 props를 인수로 사용할 수 있습니다. 그러면 props가 변경 될 때만 다시 렌더링됩니다 (이제 핸들러 참조가 변경되지 않기 때문).
하위 구성 요소
class TableHeader extends Component {
handleClick = () => {
this.props.onHeaderClick(this.props.value);
}
render() {
return (
<th onClick={this.handleClick}>
{this.props.column}
</th>
);
}
}
주성분
{this.props.defaultColumns.map((column) => (
<TableHeader
value={column}
onHeaderClick={this.handleSort}
/>
))}
Old Easy Way (ES5)
.bind
를 사용하여 원하는 매개 변수를 전달하면 컴포넌트 컨텍스트와 함수를 바인딩 할 수 있습니다.
return (
<th value={column} onClick={this.handleSort.bind(this, column)}>{column}</th>
);
출처 : https://stackoverflow.com/questions/29810914/react-js-onclick-cant-pass-value-to-method
728x90
반응형
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
객체에 JavaScript의 특정 속성이 있는지 확인하는 방법 (0) | 2021.10.25 |
---|---|
Node.js : 줄 바꿈없이 콘솔에 출력하는 방법 (0) | 2021.10.25 |
Javascript에서 조건부로 객체에 멤버를 추가하는 방법 (0) | 2021.10.20 |
json gem 설치 오류 'mkmf.rb can't find header files for ruby' (0) | 2021.10.20 |
타사 라이브러리를 사용하지 않고 Node.js로 파일을 다운로드하는 방법 (0) | 2021.10.20 |