setField(e){console.log("in setfield", e)}
<select multiple className="form-control" id="sel2" name="sellist2"
onChange={() => this.setField()}>
이 값은 값을 기대하는 함수에 null 값을 전달하기 때문에 작동하지 않습니다 (이 경우 e). 그러나 함수가 이미 상태에있는 것을 제출 한 경우에는 적절한 방법입니다.
setField(e){console.log("in setfield", e)}
<select multiple className="form-control" id="sel2" name="sellist2"
onChange={(e) => this.setField(e)}>
이벤트를 e로 받고 나서 함수에 전달하기 때문에 작동합니다. 이벤트를 e와 연관시키는 방법을 어떻게 알 수 있습니까? 이 기능이 html을 다룰 때 다른 것까지 확장됩니까?
setField(e){console.log("in setfield", e)}
<select multiple className="form-control" id="sel2" name="sellist2"
onChange={this.setField}>
이것은 왜 그것이 왜 효과가 있는지 이해하지 못하지만, 그렇지 않습니다. 기본적으로 이벤트를 함수에 전달하는 것이 본질적으로 알고 있다고 가정합니다. 이 내장 논리는 다른 곳에서 발생합니까? 이벤트에는 필요하지 않습니까?
다시 감사합니다. 자바 스크립트를 처음 접했기 때문에 자바 스크립트의 모든 우상 동기를 배우는 것이 흥미 롭습니다. 슬프게도 대부분의 학습은 디버깅의 좌절을 통해 이루어집니다!
- 답변 # 1
- 답변 # 2
복잡하지 않습니다. onChange에 할당 한 Javascript 함수는 적절한 시간에 호출되며 일반적으로
e
라는 단일 인수를 전달합니다. . 해당 인수에 함수에서 원하는 이름을 지정하거나 전혀 선언하지 않을 수 있지만 첫 번째 인수가 있습니다.이렇게하면 :
onChange={() => this.setField()}
이벤트 핸들러로 전달 된 인수를 무시하고 이벤트 핸들러 내에서
this.setField()
를 호출합니다. 놀랍게도setField()
에 대한 논쟁을 전달하지 않습니다. . 실제로 실제로 일어나는 일은 다음과 같습니다.onChange={(e) => this.setField()}
DOM 사양에 따르면 onChange 이벤트 핸들러가 호출되면
How does it know to associate the event to e? does this functionality extent to other things when dealing with html?
이 코드 섹션 :
e
onChange 이벤트 핸들러가 되고자하는 함수는
와이즈 비즈onChange={this.setField}
입니다. 방법. 따라서 DOM이 해당 메소드를 호출 할 때 위 예제와 같이 이벤트 객체를 첫 번째 인수로 전달합니다.앞에서 설명한 것처럼 DOM 사양은이 이벤트 핸들러가 지정되는 곳입니다. 그것의 정의에서, 당신이이 이벤트 핸들러로 등록한 콜백 함수로 전달 될 인수가 무엇인지 설명합니다. 이것은 Javascript의 모든 콜백에 적용됩니다. 발신자는 콜백에 전달할 대상을 결정합니다. 이것은이 유형의 이벤트 핸들러에만 국한되지 않습니다. 콜백은 Javascript에서 많은 곳에서 사용됩니다.
setField()
와 같은 것조차 콜백을 가져오고 콜백에 전달할 인수를 결정하는 콜백 (이 경우 Array 객체의 구현)의 호출자입니다.This one I really dont understand why it works, but it does. I am assuming that it inherently know to pass the event as default to the function. again does this inbuilt logic occur anywhere else, maybe not neccessarily for events?
관련 자료
- javascript - jQuery의 이벤트 핸들러로 이것을 사용하여 클래스 토글
- reactjs - React Hooks 구현에서 React ContextProvider의 값 유형은 무엇입니까?
- c - 루프를 사용할 때 무슨 일이 일어나고 있습니까?
- google chrome - requestFullscreen은 더 이상 메시지 이벤트 핸들러에서 작동하지 않습니다
- suitescript2.0 - NetSuite의 사용자 이벤트 스크립트에서 oldRecord와 newRecord의 차이점은 무엇입니까?
- Angular - 모난, 딱딱한, 모서리가있는, 각도의, 뼈가 앙상한 - 동적으로 추가 된 컨텐츠에 클릭 이벤트 핸들러를 추가하는 방법
- Angular> vendorjs에 정의 된 이벤트 핸들러를 덮어 쓰는 방법은 무엇입니까?
- asp.net - C #에서 입력 매개 변수를 이벤트 핸들러 메서드에 올바르게 전달하려면 어떻게해야합니까?
- 추가 된 버튼에서 JavaScript 이벤트 핸들러가 호출되지 않습니다
- jquery - 이벤트 핸들러가있는 Javascript 변수 범위가 이상하게 작동합니다
- javascript - 소품을 이벤트 핸들러에 전달하는 방법
- java - 이벤트 핸들러 클릭시 모든 레이블을 제거하는 방법
- c# - 이벤트 핸들러 "메소드 그룹"을 추가하거나 제거 할 수 없지만 디자이너는
- vue.js - [vue 경고] - "click"이벤트에 대한 잘못된 핸들러 : 정의되지 않음
- javascript - 수정 방법 - [vue warn] : v-on 핸들러 오류 :"typeerror : null is an object" 미쳐가는 이벤트 핸들러
- c# - 이벤트 핸들러에서 안드로이드 특정 코드를 호출하는 방법
- javascript - Apple 디바이스에 대한 Dblclick 이벤트 핸들러가 응답하지 않습니다
- c# - xUnit 테스트 비동기 이벤트 핸들러
- javascript - 이 JS IIFE는 이벤트 핸들러에 대한 이벤트 및 매개 변수를 올바르게 전달합니까?
- 플라스크 socketio 이벤트 핸들러를 수동으로 호출
- javascript : 객체 내부의 속성에 액세스해야하지만 항상 정의되지 않은 상태로 돌아옵니다.
- javascript : 간단한 반응 구성 요소를 렌더링 할 수 없습니다.
- javascript : Undefined는 객체 React 네이티브가 아니지만 나중에 데이터를 표시합니다.
- javascript : React useState 후크에서 배열을 완전히 교체
- javascript : `children` 외에 소품이없는 React.PropsWithChildren?
- javascript : 데이터베이스가 ".length"로 비어있을 때 "0"이벤트를 어떻게 표시합니까?
- javascript : setState는 handleSubmit에서 무시됩니다.
- javascript : React Bootstrap 탐색
- javascript :
- javascript : React.createElement () 내에서 인수 전달
자바 스크립트의 모든 함수는 함수가 아무 것도 수행하지 않더라도 임의로 많은 수의 매개 변수를 전달할 수 있습니다. 예를 들어 쓸모없는 경우 다음이 합법적입니다.
6 개의 데이터 조각이 함수에 전달되었지만 함수가 아무 것도 수행하지 않았기 때문에 아무 작업도 수행되지 않았습니다. 전달 된 값에 액세스하려면 호출 할 이름을 선택하면됩니다. 이 이름은 함수의 로컬 이름이며 원하는 이름이 될 수 있습니다.
따라서 다음과 같이 리스너를 설정할 때 :
이벤트 객체를 전달하여 함수가 호출됩니다. 그러나 함수가 첫 번째 매개 변수에 이름을 지정하지 않으므로 액세스 할 수있는 방법이 없으며 this.setField를 호출하면 아무것도 전달하지 않습니다.
이 리스너와 대조적으로 :
이벤트 객체를 전달하여 함수가 다시 호출됩니다. 이번에는 해당 인수의 이름을 'e'로 지정한 다음 원하는대로 수행 할 수 있습니다 (이 경우 setField로 전달).
이 작업을 수행 할 때 :
중개인을 잘라 버렸습니다. this.setField는 이벤트 객체를 전달하여 직접 호출됩니다. 아마도 setField는 이것을 예상하고 전달 된 객체로 무언가를 수행합니다.