2016-09-08 17 views
0

감사합니다! 오랜 시간 동안의 극단적 인 googler, 첫 번째 질문. 나는이 문제에 대한 해결책을 찾기 위해 두뇌를 해치워 왔으며 아직 해결책을 찾지 못했다.반응 라우터가 URL에 POST 요청을 앞두고

반응 데이터를 fetchPOST 요청을 통해 express api로 보내려고합니다. 나는 GET API 데이터를 통해 fetch을 통해 저장소 및 소스로 플럭스 동작을 성공적으로 사용했으며 명시 적으로 POST 개의 요청을 성공적으로 저장했습니다. 하지만 양식을 제출하고 POST 요청을 보낼 때마다 반응 라우터가 hashHistory에 대한 쿼리를 앞에 붙이는 것처럼 보입니다.

screencap of request handled by react-router

여기에 프론트 엔드의 GITHUB GIST 반응 및 백 엔드 표현을합니다. 내가 AJAXXMLHttpRequests,하지만 같은 문제를 포함하여 몇 가지 솔루션을 시도

├── app 
│   ├── controllers 
│   │   └── projects.js 
│   ├── helpers 
│   │   ├── hash.js 
│   │   └── passportHelper.js 
│   ├── models 
│   │   └── projects.js 
│   ├── router.js 
│   └── views 
│    ├── error.hbs 
│    ├── home.hbs 
│    ├── layout.hbs 
│    ├── login.hbs 
│    └── register.hbs 
├── app.js 
└── src 
    ├── app 
    │   ├── AppRoot.jsx 
    │   ├── actions 
    │   │   └── ProjectCreateActions.js 
    │   ├── alt.js 
    │   ├── components 
    │   │   └── CreateProject.jsx 
    │   ├── dispatcher 
    │   │   └── AppDispatcher.js 
    │   ├── sources 
    │   │   └── ProjectCreateSource.js 
    │   └── stores 
    │    └── ProjectCreateStore.js 
    └── client 
     ├── css 
     ├── fonts 
     └── js 

: 그리고 여기에 애플리케이션 구조의 나무입니다. 나는 반응 라우터에서 <Link>으로가는 길을 찾으려고했지만 익스프레스 서버에 도달 할 수없는 것 같습니다. 그것이 국가를 설정하는 방법과 관련이 있는지 또는 심지어 alt 플럭스 스토어 ()로 상태를 공유하고 있는지, 또는 상태가 어떻게 작동하는지 또는 소도시를 사용해야하는 경우,하지만 실제로는 더듬 거리는 것일 수 있습니다. POST 요청을 반응에서 벗어나 익스프레스로 보내려고하는 문서 주변. 모든 팁은 대단히 감사하겠습니다!

답변

1
당신이 (그렇지 않으면 지정되지 않은 경우 GET 요청에 양식 제출 기본값을) 발사에서 기본 이벤트를 방지해야 할 것 같습니다

: 놀라운

_onSubmit(e) { 
    e.preventDefault(); 
    ProjectCreateStore.listen(this._onChange) 
    ProjectCreateActions.postProjects() 
} 
+0

, 감사합니다! 이제 서버에서'POST'를 볼 수 있습니다. 현재 구현에서, 나는 실수로'ProjectCreateActions.js'에서'document.getElementById ('x'). value'를 사용하여 빈 요청으로 이어지는 데이터를 보관하고있었습니다. 나는'x : this.state.x'와 같은 액션으로 상태에 접근 할 수 있습니까? – marcx

+0

'onSubmit = {this._onSubmit}'을'

'구성 요소로 옮기면'e.target' (form 요소)을'postProjects'와'target.getElementById (...)'에 전달할 수 있습니다. , 그러나 너무 단단히 결합 된 느낌. 필자가 말했던 것처럼'onSubmit'을 움직이려면'event.target.getElementBy ...'에서 필요한 값을 객체로 가져 와서 그 객체를'postProjects (formData)'에 넘겨 주면됩니다. 다행히 그 의미가 있습니다 –

+0

확실히 이해가됩니다. 첫 번째 방법으로 이벤트 대상'e.target'을'postProjects (e.target)'에 전달한 다음 요소를 직접 타겟팅하면 참조 오류 'target is not defined'가 발생합니다. 'CreateProject.jsx' 구성 요소에서 객체의 모든 데이터를 그룹화하려고했지만 (배열을 시도한) 어떻게 든 onChange()에서'null 속성 '오류가 발생하지만 추적 할 수 없습니다 국가가 null이되는 곳. 또한 getInitialState()를 추가하여 양식 값을 빈 행으로 설정하려고 시도했습니다. – marcx

관련 문제