반응형
Submit.preventDefault()에서 TypeScript 대응이 작동하지 않음
나는 리액트와 타입스크립트를 이용한 간단한 사용자 검색 앱을 만들고 있다. 나는 사용자를 검색하기 위한 입력 텍스트 상자와 검색을 제출하는 입력 버튼이 있는 기본 양식을 가지고 있다. 하지만 내 방법은 효과가 없는 것 같아. 내가 제출하면 전체 앱이 새로 고쳐진다. 사실, 그것은 전혀 불려지지 않을 수도 있다.
private handleSubmit = (e: React.FormEvent<HTMLInputElement>) => {
e.preventDefault();
this.props.searchUsers(this.state.text);
this.setState({text: ''});
}
private handleChange = (e: React.FormEvent<HTMLInputElement>) => {
this.setState({text: e.currentTarget.value});
}
public render() {
return (
<div>
<form className="form">
<input
type="text"
name="text"
value={this.state.text}
placeholder="Search Users..."
onChange={this.handleChange}
/>
<input
type="submit"
value="search"
className="btn btn-dark btn-block"
onSubmit={this.handleSubmit}
/>
</form>
</div>
);
}
좋은 의견이라도 있나? 감사합니다!
잘못된 위치에 추가하고 있습니다.
너는 버튼에 없는 것을 추가해야 한다.
public render() {
return (
<div> // \/ added here
<form className="form" onSubmit={this.handleSubmit}>
<input
type="text"
name="text"
value={this.state.text}
placeholder="Search Users..."
onChange={this.handleChange}
/>
<input // removed from the button
type="submit"
value="search"
className="btn btn-dark btn-block"
/>
</form>
</div>
);
}
에서 추가하는 것을 확인할 수 있습니다.
* 를 트리거하려면 /가 필요합니다
handleSubmit 기능을 제거하고 on 버튼을 추가하여 유사한 문제를 해결했습니다. 그리고 당신은 양식에 제출해야 합니다.
private handleSubmit = (e: React.FormEvent<HTMLInputElement>) => {
this.props.searchUsers(this.state.text);
this.setState({text: ''});
}
public render() {
return (
<div>
<form onSubmit={this.handleSubmit} className="form">
<input
type="text"
name="text"
value={this.state.text}
placeholder="Search Users..."
onChange={this.handleChange}
/>
<input
type="submit"
value="search"
className="btn btn-dark btn-block"
onClick={e => {e.preventDefault(); this.handleSubmit()}}
/>
</form>
</div>
);
}
이는 테스트를 거쳤으므로 작동해야 합니다.
또한 이벤트를 onClick에서 onSubmit으로 이동하는 것 외에도 양식에서 이벤트를 가져오려면 React를 입력합니다.FormEvent가 작동합니다.
private handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
this.props.searchUsers(this.state.text);
this.setState({text: ''});
}```
Instead of e:React.FormEvent<HTMLInputElement>
간단하게 할 수 있어요 :-
private handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
this.props.searchUsers(this.state.text);
this.setState({text: ''});
}
private handleChange = (e: React.FormEvent<HTMLInputElement>) => {
this.setState({text: e.currentTarget.value});
}
public render() {
return (
<div>
<form className="form" onSubmit={(e) =>this.handleSubmit(e)}>
<input
type="text"
name="text"
value={this.state.text}
placeholder="Search Users..."
onChange={this.handleChange}
/>
<input
type="submit"
value="search"
className="btn btn-dark btn-block"
/>
</form>
</div>
);
}
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault()
}
return (
<form onSubmit={e => handleSubmit(e)}>
<label>Name</label>
<input type="text" placeholder='John Doe'/>
<label>Email</label>
<input type="email" placeholder='example@doamin.com'/>
<input type="submit"/>
</form>
)
반응형
'개발하자' 카테고리의 다른 글
텍스트 파일에서 단어를 검색하고 파이썬으로 전체 줄을 인쇄하는 방법은 무엇입니까? (0) | 2023.04.21 |
---|---|
데이터() 키가 TypeScript와 함께 작동하도록 만드는 방법은 무엇입니까? (0) | 2023.04.20 |
Terraform ELBS3 사용 권한 문제 (0) | 2023.04.19 |
Fast API 변수 쿼리 매개 변수 (0) | 2023.04.18 |
Flutter를 사용하여 Slack 채널에서 메시지를 보내는 방법은 무엇입니까? (0) | 2023.04.18 |