반응, 양식 새로 고침 문제, 기본 동작이 방지되지 않음

LirysJH

이 질문은 React, 양식 새로 고침 문제와 관련이 있습니다 (복제 죄송합니다). 그러나 문제가 <form onSumbit={ validation }발생하지 않습니다. 결과적으로 내가 달성하려는 간단한 설명이 있습니다. 사용자가 이메일과 텍스트를 입력 할 양식을 만들었습니다. Submit버튼을 클릭하면 SmtpJS를 통해 데이터가 전송됩니다. 하지만 데이터를 입력하면 양식이 다시로드됩니다 (전체 페이지가 아닌 양식). onSubmit양식의 이벤트 를 제어하려고 했지만 여전히 다시로드됩니다. 왜?

import React, { Component, lazy, Suspense } from 'react';
import './App.css';
import { BrowserRouter, Switch, Route } from 'react-router-dom';
// other components' imports
import { OnlineReception } from './components/OnlineReception/OnlineReception';

export default class App extends Component {
  state = {
    ...
    // feedback form
    formData: {
        host: "smtp.mailtrap.io",
        recipient: "[email protected]", // email is an example here
        sender: "",
        text: "",
        subject: "Feedback",
        token: ""
    }
  }

  // send email with data
  // from Online Reception's
  // component form

/*
  sendEmail = () => {
    window.Email.send({
        Host : this.state.formData.host,
        Username : "someUsername", // for local testing
        Password : "somePassword", // for local testing
        To : this.state.formData.recipient,
        From : this.state.formData.sender,
        Subject : this.state.formData.subject,
        Body : `<html>${this.state.formData.text}</html>`
    }).then(
      message => alert(message)
    )
  };
*/

  // changing sender & message input values

  toggleChangeSender = async (event) => {
    
    await this.setState({
        ...this.state,
        formData: {
            host: this.state.formData.host,
            recipient: this.state.formData.recipient,
            sender: event.target.value,
            text: this.state.formData.text,
            subject: this.state.formData.subject,
            token: this.state.formData.token
        }
    });
    
    console.log("sender - ", this.state.formData.sender);
  }

  toggleChangeText = async (event) => {
    
    await this.setState({
        ...this.state,
        formData: {
            host: this.state.formData.host,
            recipient: this.state.formData.recipient,
            sender: this.state.formData.sender,
            text: event.target.value,
            subject: this.state.formData.subject,
            token: this.state.formData.token
        }
    });
    
    console.log("text - ", this.state.formData.text);
  }


  render() {
    return (
      <BrowserRouter>
        <div className="App">
          ...
            <Switch>          
              ...
              <Route path="/online-reception/" component={
                () =>
                  <OnlineReception
                    formData={ this.state.formData }
                    onChangeSenderData={ this.toggleChangeSender }
                    onChangeTextData={ this.toggleChangeText }
                  />
              } />

            </Switch>
        </div>
      </BrowserRouter>
    );
  }
}

양식이있는 OnlineReception 구성 요소

import React from 'react';
import './css/OnlineReception.css';

export const OnlineReception = (props) => {

    let { formData } = { ...props };

    const validation = (e) => {
        e.preventDefault();

        console.log("validation called");
        console.log("formData - ", formData);
    };

    return (
        <div className="OnlineReception">
            <h3 className="title">
                Feedback
            </h3>
            <form className="feedback"
                onSubmit={ validation }
            >    
                <div className="wrapper">
                    <label>
                        Email
                    </label>
                    <input
                        type="email"
                        name="replyto"
                        className="field"
                        placeholder="Example: [email protected]"
                        autoComplete="off"
                        value={ formData.sender }
                        onChange={ props.onChangeSenderData }
                    />
                    <label>
                        Message
                    </label>
                    <textarea
                        name="message"
                        className="field text-body"
                        placeholder="Text here"
                        value={ formData.text }
                        onChange={ props.onChangeTextData }
                    />
                    <div className="buttonBox">
                        <button className="submit"
                            type="submit"
                        >
                            Submit
                        </button>
                    </div>
                </div>
            </form>

        </div>
    )
};
Bolarson

그것은 나를 위해 일하는 것 같습니다. 그래도 React Router없이 시도해 보았는데, 그냥 직선적 인 구성 요소 였고 잘 작동했습니다. 귀하의 문제는 렌더링 소품 대신 구성 요소 소품을 사용하고 있다는 것입니다.

시험 <Route path="/online-reception/" render={ ...

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

반응, 양식 새로 고침 문제

분류에서Dev

PHP 양식이 제출되지 않음, 페이지가 새로 고침 됨

분류에서Dev

JSF Richfaces PopupPanel 새로 고침 양식이 작동하지 않음

분류에서Dev

반응 양식이 제대로 작동하지 않음 (소품 문제 (?))

분류에서Dev

새로 고침하지 않고 제출하는 양식이 작동하지 않음

분류에서Dev

페이지 새로 고침없이 JQuery 양식 제출이 JQuery 충돌로 인해 작동하지 않음

분류에서Dev

페이지 새로 고침없이 ajax 양식이 다시 제출되지 않음

분류에서Dev

양식 제출 후 새로 고침시 웹 페이지 UI가 업데이트되지 않음

분류에서Dev

자동 ajax 새로 고침 후 수동으로 부분보기 새로 고침이 작동하지 않음

분류에서Dev

양식 제출 후 PHP mysql 새로 고침 동적 페이지

분류에서Dev

VIM이 제대로 새로 고침되지 않음

분류에서Dev

VIM이 제대로 새로 고침되지 않음

분류에서Dev

양식 제출은 시간이 지나면 작동하지 않고 새로 고침 후에 만 작동합니다.

분류에서Dev

페이지 새로 고침에서 전환 기간이 작동하지 않음

분류에서Dev

양식 제출 후 페이지 새로 고침 중지

분류에서Dev

반복 제어 / 호출기의 부분 새로 고침이 부트 스트랩 탭에서 작동하지 않음

분류에서Dev

하위 양식에서 기본 양식으로 문자열을 반환하는 방법 (새 양식을 열지 않음)?

분류에서Dev

기본 정규식이 제대로 작동하지 않음

분류에서Dev

XPage가 부분 새로 고침시 백엔드 데이터와 제대로 동기화되지 않음

분류에서Dev

응용 프로그램을 종료하지 않고 첫 번째 양식 닫기 / 새 '기본 양식'재 지정

분류에서Dev

재활용보기로 풀 새로 고침이 작동하지 않음

분류에서Dev

새로 고침 기능이 예상대로 작동하지 않음 Swift 3

분류에서Dev

페이지 새로 고침 PHP없이 Ajax 양식 제출

분류에서Dev

보안 문자 새로 고침이 제대로 작동하지 않습니다.

분류에서Dev

페이지를 새로 고침하지 않고 양식을 제출하고 자바 스크립트에 연결

분류에서Dev

페이지 새로 고침을 피하기 위해 ajax 및 PHP로 양식을 제출하는 방법

분류에서Dev

PHP : 잘못된 양식 제출시 페이지 새로 고침

분류에서Dev

양식 제출 후 CodeIgniter 새로 고침 페이지

분류에서Dev

페이지 새로 고침시 양식 제출

Related 관련 기사

  1. 1

    반응, 양식 새로 고침 문제

  2. 2

    PHP 양식이 제출되지 않음, 페이지가 새로 고침 됨

  3. 3

    JSF Richfaces PopupPanel 새로 고침 양식이 작동하지 않음

  4. 4

    반응 양식이 제대로 작동하지 않음 (소품 문제 (?))

  5. 5

    새로 고침하지 않고 제출하는 양식이 작동하지 않음

  6. 6

    페이지 새로 고침없이 JQuery 양식 제출이 JQuery 충돌로 인해 작동하지 않음

  7. 7

    페이지 새로 고침없이 ajax 양식이 다시 제출되지 않음

  8. 8

    양식 제출 후 새로 고침시 웹 페이지 UI가 업데이트되지 않음

  9. 9

    자동 ajax 새로 고침 후 수동으로 부분보기 새로 고침이 작동하지 않음

  10. 10

    양식 제출 후 PHP mysql 새로 고침 동적 페이지

  11. 11

    VIM이 제대로 새로 고침되지 않음

  12. 12

    VIM이 제대로 새로 고침되지 않음

  13. 13

    양식 제출은 시간이 지나면 작동하지 않고 새로 고침 후에 만 작동합니다.

  14. 14

    페이지 새로 고침에서 전환 기간이 작동하지 않음

  15. 15

    양식 제출 후 페이지 새로 고침 중지

  16. 16

    반복 제어 / 호출기의 부분 새로 고침이 부트 스트랩 탭에서 작동하지 않음

  17. 17

    하위 양식에서 기본 양식으로 문자열을 반환하는 방법 (새 양식을 열지 않음)?

  18. 18

    기본 정규식이 제대로 작동하지 않음

  19. 19

    XPage가 부분 새로 고침시 백엔드 데이터와 제대로 동기화되지 않음

  20. 20

    응용 프로그램을 종료하지 않고 첫 번째 양식 닫기 / 새 '기본 양식'재 지정

  21. 21

    재활용보기로 풀 새로 고침이 작동하지 않음

  22. 22

    새로 고침 기능이 예상대로 작동하지 않음 Swift 3

  23. 23

    페이지 새로 고침 PHP없이 Ajax 양식 제출

  24. 24

    보안 문자 새로 고침이 제대로 작동하지 않습니다.

  25. 25

    페이지를 새로 고침하지 않고 양식을 제출하고 자바 스크립트에 연결

  26. 26

    페이지 새로 고침을 피하기 위해 ajax 및 PHP로 양식을 제출하는 방법

  27. 27

    PHP : 잘못된 양식 제출시 페이지 새로 고침

  28. 28

    양식 제출 후 CodeIgniter 새로 고침 페이지

  29. 29

    페이지 새로 고침시 양식 제출

뜨겁다태그

보관