2016-12-23 10 views
1

나는 다음과 같다 경로를 갖고 싶어 경로 PARAM로 확장 경로를 저장 : projectId가있는 경로를 분할에서 오는 하나의 1 같은 문자열 및 folder1, folder2, ..., folderN 될 것라우터 반응 :

/projects/:projectId/:folder1/:folder2/.../:folderN/:currentFolder/ 

그 위치.

그래서 이런 정규식 완전히 잘 그것을 일치합니다 :

/\/?projects\/(\w|\d)+\/folders\/((\w|\d)*\/?)*(\w|\d)+\/?/; 

을 그러나, 나는이 문제가 경로에서 매개 변수로 현재 폴더를 앞에 폴더의 경로를 저장하는 데입니다. 즉, :projectId:currentFolder과 같은 것을 얻을 수 있지만 현재 폴더로 연결되는 폴더 목록을 :path 또는 그 밖의 것으로 저장하려고합니다.

반응 라우터에서이 임의의 경로를 저장하는 구문은 무엇입니까?

답변

1

매개 변수는 URL segments과 일치합니다.

불확실한 수의 폴더의 경우 N 경로가있는 것을 제외하고는 매개 변수를 사용하여 실용적인 방법이 없습니다 (여기서 N은 가능한 최대 폴더 수임). 물론 더 많은 경로를 추가하지 않고도 N이 증가한다면 지루할 것입니다.

와일드 카드 연산자를 사용하여 모든 폴더를 일치시킨 다음 폴더에 액세스해야하는 모든 위치에서 params.splat 값의 문자열 분할을 수행하는 것이 가장 좋습니다. 반응 라우터의 /17/this/is/the/path/to/the/folder

const Folder = ({ params }) => { 
    const { productId, splat, currentFolder } = params 
    const folders = splat.split('/') 
    // productId = '17' 
    // currentFolder = 'folder' 
    // folders = ['this', 'is', 'the', 'path', 'to', 'the'] 
    ... 
} 
+0

를 들어 버전 :

<Route path=":productId/**/:currentFolder" component={Folder} /> 

는 경로 이름을 감안할 때? 나는 나의 길 params에서 'splat'을 얻지 않고있다. – corvid

+0

그것은 2/3이었다. 4를 사용하고 있습니까? –

+0

버전 3.0.0입니다. – corvid