2017-01-09 4 views
-1

이 오류의 원인은 무엇입니까? {{ form_routes[key] }}ReactDOM의 이중 중괄호 오류

전체 관련 코드에서

Syntax error: Unexpected token, expected , 
{ Object.keys(form_routes).map((key,index) => <Route path={key} component={{ form_routes[key] }}></Route>) } 

:

const form_routes = { 
    'start': "Start", 
    'part1': "Part1", 
    'part2': "Part2", 
    'part3': "Part3", 
    'part4': "Part4", 
    'part5': "Part5", 
    'part6': "Part6" 
} 

ReactDOM.render(
    <Provider store={store}> 
     <Router history={hashHistory} render={applyMiddleware(useRelativeLinks())}> 
     <Route path="/" component={App}> 
      <IndexRedirect to='/search'/> 
      <Route path='main' component={MainMenu}/> 
      <Route path='search' component={Search}/> 
      <Route path='form' component={Form}> 
       <IndexRedirect to='start'/> 
       { Object.keys(form_routes).map((key,index) => <Route path={key} component={{ form_routes[key] }}></Route>) } 
      </Route> 
     </Route> 
     </Router> 
    </Provider>, 
    root 
); 

작품 일반 경우 :

<Route path='start' component={Start}></Route> 
<Route path='part1' component={Part1}></Route> 
<Route path='part2' component={Part2}></Route> 
<Route path='part3' component={Part3}></Route> 
<Route path='part4' component={Part4}></Route> 
<Route path='part5' component={Part5}></Route> 
<Route path='part6' component={Part6}></Route> 

답변

1

component={...}가 식을 포함 할 예정이다. 당신이 제공하는 표현은 유효하지 않은 객체 이니셜 라이저 인 { form_routes[key] }입니다. 동일한 오류가 발생합니다 :

console.log({ form_routes[key] }); 

아마도 component={ form_routes[key] }을 원했을 것입니다.

+0

단지'component = {form_routes [key]}'일 때 내 구성 요소를 표시하지 않습니다. 제 생각에는'component = "Start"'와 같기 때문입니다. 어떤 다른 경로 패턴은'component = {Start} '로 작동하지 않습니다. –

+0

@ A.Lau : 물론 그렇지 않습니다.'form_routes'에는 문자열이 포함되어 있습니다. '{ "Start"}'! ='{Start}'. 'form_routes' ('Start'가 아닌'Start')에 상응하는 값을 넣어야하고'{form_routes [key]}'가 작동 할 것입니다. –

+0

감사합니다. 그것은 나에게 다소 어리 석다. 중괄호는 나를 조금 혼란스럽게 만들었다. –