2017-01-09 3 views
-1

Что вызывает эта ошибка?Ошибка двойных фигурных скобок с помощью ReactDOM

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

на {{ form_routes[key] }}

полный соответствующий код:

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 
); 

Works, если обычная:

<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' содержит строки. '{" Пуск "}'! = '{Пуск}'. Вам нужно будет поместить эквивалентное значение в 'form_routes' (' Start', а не '' Start ''), а затем' {form_routes [key]} 'будет работать. –

+0

Спасибо. Это было глупо с моей стороны. Кудрявые скобки немного смутили меня. –

Смежные вопросы