2017-02-20 2 views
1

Я пытаюсь экспортировать одну строку const my <SearchForm/>, но по какой-то причине это ошибка.React: Can not export const

Вот мой код

import React from 'react'; 

export const SearchForm = props => (
    <form className="search-form" onSubmit={props.onSubmit}> 
    <input placeholder="Username" type="text" value={props.value} onChange={props.onChange}></input> 
    <input type="submit" value="Search"></input> 
    </form>) 

SearchForm.propTypes = { 
    onSubmit: React.PropTypes.func.isRequired, 
    value: React.PropTypes.string.isRequired, 
    onChange: React.PropTypes.func.isRequired 
} 

React.createElement: тип неверен - ожидаемая строка (для встроенных компонентов) или класса/функции (для составных компонентов), но получили не определено , Вероятно, вы забыли экспортировать свой компонент из файла, в котором он определен. Проверьте метод рендеринга Home.

Это нормально, если я const SearchForm = props => ..... и export default <SearchForm/> в нижней части. Я также попробовал export default SearchForm... и другие варианты.

Я следую учебнику egghead.io и ребятам, использующим тот же синтаксис, поэтому я понятия не имею, что не так? Вот его код

enter image description here

ответ

0

как вы импортировать компонент? Вы должны попытаться добавить по умолчанию после экспорта:

export default class... 
+0

Ваш вопрос об импорте заставил меня играть с ним и удалось это исправить. Я делал «импорт SearchForm из ...» и менял его на «import {SearchForm} from ...» и экспортировал его с помощью 'export const SearchForm = props =>' ... – Apswak

+0

В реакциях вы «предположили», чтобы объявить только один компонент для каждого файла. Поэтому я думаю, что лучше добавить ключевое слово по умолчанию и удалить скобки в импорте. – Kornflexx

+0

, который был бы моим предпочтительным вариантом, но он говорит, что неожиданный токен const .. не уверен, почему – Apswak

5

Я думаю, вы в настоящее время используют

import SearchForm from './SearchForm'; 

Но поскольку ваш экспорт

export const SearchForm = props => (

Таким образом, вы должны использовать этот синтаксис

import {SearchForm} from './SearchForm'; 

В заключение:

Когда экспорт по умолчанию, импорт, без {}

Когда экспорт без дефолта, импорт с {}