2015-01-22 4 views
8

내 경로를 통해 데이터를 전달하는 가장 좋은 방법을 찾으려고합니다. 나는 params를 사용할 수 있지만 params에 속하지 않는 특정 유형의 데이터가 있음을 알고 있습니다.React-router : 경로를 통한 데이터 전달

예 : 응용 프로그램 목록을 표시하는 인덱스 페이지가 있습니다. 각 응용 프로그램에는 해당 응용 프로그램의보기로 연결되는 단추가 있습니다.

응용 프로그램 자체를 응용 프로그램 처리기로 전달하려고합니다. 그러나 params를 통해 전체 응용 프로그램을 전달하는 것은 의미가 없습니다.

그래서 내가해야하는 방법은 응용 프로그램 식별자를 params에 전달한 다음 응용 프로그램 구성 요소 검색 내 ApplicationStore (응용 프로그램 구성 요소)를 전달하는 것입니다. 식별자가 주어진 적절한 응용 프로그램에 대해.

응용 프로그램 자체를 전달하는 것이 더 쉽고 빠르지 않습니까? 이것을 할 수있는 방법이 있습니까? 이것을하지 않을 이유가 있습니까? 사전에

<Link to="showApplication" params={{name: application.name}}>View</Link>

또는

<Link to="showApplication" params={{application: application}}>View</Link>

감사 : 여기

은 일부 코드입니다!

+1

어떻게 해결 했습니까? 제 첫 대답은 당신이 원하는 것이 아니라고 생각합니다. – Robin

+1

나는 동일한 질문을 가지고있다 : ( – Robin

답변

5

사람이 새로 고침하거나 다른 방법으로 URL을 직접로드 할 때 문제가 발생하면 올바른보기가 표시되어야합니다. URL은 문자열이기 때문에 경로를 문자열로 나타내야합니다. 실제 응용 프로그램을 url에 쉽게 (쉽게) 밀어 넣을 수 없습니다.

라우터의 역할은 해당 문자열 (URL)을 실제 코드 (처리기)에 매핑하고 추가 데이터 (매개 변수, 쿼리 및/또는 해시)를 제공하는 것입니다.

라우터 사용자의 역할은 라우터가 올바른 처리기를 선택하기에 충분한 정보와 처리기가 작업을 수행하는 데 필요한 정보 (예 : 표시 할 응용 프로그램)가 충분한 지 확인하는 것입니다.

URL이 mysite.com/showApplication 인 경우 정보가 충분하지 않습니다. 이 같은 있다면

는 : URL에 응용 프로그램을 넣어

mysite.com/showApplication/React.createClass(%7Brender%3A%20function()%7Breturn%20React.createElement('div'%2C%20null%2C%20%22I'm%20an%20application!%22%7D%7D)%3B 

즉, 그것은 너무 많은 정보, 일반적으로 아주 나쁜 생각입니다.

그러나 mysite.com/showApplication/applicationName 내가 쉽고 해키 방법을 제공합니다 바로 :-)

+0

흠 당신은 아약스 요청의 무리에 의해 객체를 생성하는 이것을위한 실제 유스 케이스를 잊어 버렸습니다 : 나는 다른 경로에 ID를 포함한 매개 변수를 통해 정보의 일부를 보냅니다. ID를 통해 전체 개체를 다시 생성 할 수 있지만 아무 문제가 없지만 개체를 ​​보내면 대역폭을 절약 할 수 있습니다. 개체가 정의되지 않은 경우 ID, 실제 사용 사례로 다시 생성됩니다. – Onza

-1

, 당신은 예를 들어 루트를 통해 정보를 공유하는 데 사용하는 전역 객체가있다. FakeRain이 길 위에서 언급 한 바와 같이이 개체가이 경로 자체로 다시 만들 수 공유하려는 경우에만이 방법을 사용하는 것이 매우 중요하다는 것을

window.CONTEXT = {'share':'this'} 

주, 그것은 사용자를 제공하기위한 충분한 정보를 포함해야한다 재충전해도 같은 경험.

공유하려는 정보를 요청해야하지만 엄청난 링크가 필요하지 않다면 대역폭을 절약해야하는 유일한 이유입니다.