javascript - 다운 - www meteor js



event.target Meteor React 프로젝트에서 양식 제출시 오류[matches] 오류 (1)

따라서 코드에는 두 가지 문제가 있습니다.

  1. setState는 비동기입니다. 함수가 실행 된 후 해결됩니다. 해결 방법 : 처음에는 let error = false 로 설정하고 setState 호출과 함께 error = true 로 설정하십시오.

  2. 빈 개체는 진실입니다. error 변수 덕분에 조건을 if(!error) 로 변경할 수 있습니다. 또는 if(error) {return} 을 수행하십시오. 이것은 또한 작동합니다.

오, 오류 메시지는 크롬 확장 프로그램에서 가져온 것입니다. Chrome은 오류 메시지가 확장 프로그램에서 나왔다는 사실을 알려주지 않습니다. 적어도 나는 생각하지 않습니다.

베스트,

이 버그로 고민 중입니다. 내 코드는 다음과 같습니다.

길기 때문에 짧은 버전이 있습니다. 이벤트를 작성하는 양식이 있습니다. handleSubmit ()에서 오류 메시지를 처리하고 없으면 db에 이벤트를 추가합니다. {Events}를 가져 오면 사실 약간의 변경을하기 전에 양식이 작동했습니다. 내가 그것을 실행할 때, 나는 오류 메시지를 받는다 : Uncaught TypeError : event.target [matches]는 함수가 아니다. 누구든지이 문제를 조사해 주셔서 감사합니다.

export default class Create extends React.Component {
constructor(props) {
  super(props);
  this.state = {
      error: {}
  }

  this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(evt) {
  evt.preventDefault();

  this.setState({error: {}});
  let title = this.refs.title.value;
  if (!title) {
    this.setState((prevState) => {
      let newState = prevState;
      newState.error.title = 'Title has to be filled up.';
      return newState;
    })
  }
  let description = this.refs.description.value;
  if (!description) {
    this.setState((prevState) => {
      let newState = prevState;
      newState.error.description = 'Description has to be filled up.';
      return newState;
    })
  }


  if (!this.state.error) {
      Events.insert({title: title, description: description});
      this.props.history.push('/home');
  }

과:

     <form onSubmit={this.handleSubmit} noValidate>

        <input ref="title" type="text" name="title" placeholder="Title"
        style={this.state.error.title ? {borderBottomColor: 'red'} : undefined}/>
        <div className="errorText">{this.state.error.title}</div>

        <input ref="description" type="text" name="description" placeholder="Description"
        style={this.state.error.description ? {borderBottomColor: 'red'} : undefined}/>
        <div className="errorText">{this.state.error.description}</div>

        <button type="submit" className="btn btn-success">Create new event</button>
    </form>




meteor