2017-12-10 30 views
0

사람은 내 홈페이지의 구성 요소에 제출을 클릭하면 모든 입력을 취소하는 방법을 말해 주실 래요? SubjectForm 구성 요소에서 preventdefault 다음에 reset()을 사용했지만, 잘못 사용했거나 작동하지 않았습니다. 또한 setState를 사용하여 입력 내용을 비어있는 기본 상태로 되 돌리려고했지만 작동하지 않았습니다. 내 코드에서사례에서 제출을 클릭 한 후 입력 필드를 반제 할 수 있습니까?

모든 것이 잘 작동하지만 내가 주제를 제출할 때마다, 필드는 자체

이 내 홈페이지의 구성 요소를 삭제하지 않습니다.

import React from 'react'; 
    import SubjectForm from './SubjectForm'; 
    import {addSubject} from '../actions/subjectAction'; 
    import {connect} from 'react-redux'; 

    const HomePage=({dispatch})=>(
     <div> 
      <SubjectForm onSubmit ={(subject)=> 
        dispatch(addSubject(subject)) 
      }/> 
</div> 
    ) 

    export default connect()(HomePage); 

이 내 subjectForm 구성 요소입니다

import React from 'react'; 

export default class SubjectForm extends React.Component{ 
    constructor(props){ 
     super(props); 
     this.state={...} 
    onNameChange =(e)=>{...} 
    onHourChange =(e)=>{...} 

    onSubmit=(e)=>{ 
     e.preventDefault(); 

     **//I tried using reset() here but it did not work** 

     if(!this.state.subjectName){...} 

    render(){ 
     return (
      <div> 
       {this.state.error && <p>{this.state.error}</p>} 
       <form className='test' onSubmit={this.onSubmit}> 
        <input 
         type="text" 
         placeholder='enter name' 
         autoFocus 
         value={this.state.subjectName} 
         onChange={this.onNameChange} 
        /> 
        <input 
         type="number" 
         placeholder='enter hour' 
         value={this.state.hour} 
         onChange={this.onHourChange} 
        /> 
        <button>Add Subject</button> 
       </form> 
      </div> 
     ) 
    } 
} 

나는 빈에 따라 반환하려고 할 때이 내 onSubmit 기능입니다. 당신이 입력 필드를 제어 할 상태를 사용하고 있기 때문에

onSubmit=(e)=>{ 
    e.preventDefault(); 
    if(!this.state.subjectName){ 
     this.setState(()=>({error:'please enter subject name'})) 
    } 
    else if(!this.state.hour && !this.state.minute){ 
     this.setState(()=>({error:'please enter time'})) 
    }else { 
     this.setState(()=>({error:''})); 
     this.props.onSubmit({ 
      subjectName:this.state.subjectName, 
      hour:this.state.hour, 
      minute:this.state.minute, 
      note:this.state.note 
     }, console.log(this.state), 
     ) 
     this.setState(()=>({ 
      subjectName:'', 
      hour:0, 
      minute:0, 
      note:'', 
      error:'' 
     })); 
    } 
} 

답변

2

, 당신은 state.field 재설정해야하며 필드를 재설정합니다. 그래서 (! this.state.subjectName)

onSubmit=(e)=>{ 
    e.preventDefault(); 

    **//I tried using reset() here but it did not work** 

    if(!this.state.subjectName){...} 

    // after finishing all you want to do with it: 
    this.setState({ 
     hour: '', // or any other initial value you have 
     subjectName: '', 
    }); 
} 
+0

내가 시도 할 때이 내 코드 제출에있는 것을 행한 onSubmit = (E) => { 경우 { this.setState (() = > ({오류 : '제목 이름을 입력하십시오'}) (! this.state.hour && this.state.minute) { this.setState (() : '제발 다른 } => ({오류가있는 경우) 시간 '})) 한다} else { this.setState (() => ({오류'입력 '})); this.props.onSubmit ({ 한 제목 : '', 시간 : 0, 분 : 0, 참고 : '' } ) } } – Nhat

+0

는에 더 쉽게하는 게시물에 추가하세요 읽고 지금까지 시도한 것을 보여주십시오. – cowCrazy

+0

내가 그랬어, 제발 좀 봐 주시겠습니까? 내가 따라 대답을 편집 한 – Nhat