2017-02-01 2 views
0

Я использую метеор с реакцией.Использование «const» в классах реагирования (и метеор)

в классе А компонента, я следующее:

const Media = (props) => { 
    ... 
} 

Но это не работает, и я не понимаю, почему. У меня есть ошибка сборки на первой линии:

Unexpected token, expected (

Кажется, я не могу использовать «сопз» в моем классе. Я не могу определить компоненты без гражданства. Спасибо за помощь!


Небольшой дополнительный вывод:

Если я определяю компонент следующим образом:

import React from 'react'; 

const Test =() => { 
    return (<img src=".." />); 
} 

export default Test; 

Тогда я могу импортировать компонент и все работает отлично.

Теперь, если у меня есть вложенный «компонент» следующим образом: import React from 'react';

class Test extends React.Component { 

    const Test =() => { 
    return (<img src=".." />); 
    } 

    render(){ 
    return(<img src=".." />) 
    } 

} 

export default Test; 

Затем я получил ошибку на линии «const». Это что-то, что нельзя сделать? Я видел примеры кода, используя такие структуры.

+0

Я установил метеорный экскрипт и пакет es5-shim. Я не знаю, нужно ли мне что-то делать. – user3900157

+0

Я использую Meteor 1.4: «Начиная с Meteor 1.3, трансляция JSX и ES2015 + встроена в основной пакет ecmascript, который установлен во всех приложениях по умолчанию, поэтому вы можете использовать все функции JavaScript, которые вы любите из коробки, нет конфигурации. ". Что-нибудь еще мне нужно сделать? – user3900157

ответ

1

Оба эти можно:

const Media = (props) => (
    <div> 
    ... 
    </div> 
) 

const Media = (props) => { 
    <div> 
    ... 
    </div> 
} 

Первый возвращает DIV, а потом один не будет.

var Media = function Media(props) { 
    return React.createElement(
    "div", 
    null, 
    "..." 
); 
}; 

var Media = function Media(props) { 
    React.createElement(
    "div", 
    null, 
    "..." 
); 
}; 

Возможно, ошибка находится где-то еще в коде.


Обычно, вы можете создать сообщение об ошибке, как это, если вы пишете:

const Media = { a, b, c} => { return a + b + c }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

, где вы() для параметров.


После вашего отзыва я понял проблему. В ES6 невозможно определить переменные внутри class. Возможны только методы.

Технически, когда вы пишете const, var, let внутри class вы определяете имя переменной, хотя я знаю, что вы пытались создать функцию.

Но если вы используете ES7, вы можете определить static и нестатические свойства без проблем внутри class.

Используйте ключевое слово static и используйте любое ключевое слово, чтобы определить переменные.

Ближайший я нашел в here.

+0

Спасибо, я использую React.Component. Полный код выглядит примерно так: 'class AddPage extends React.Component {const Media = (props) => {..}}' – user3900157

+0

Пожалуйста, отредактируйте исходный квест @ user3900157 – prosti

+0

Я предполагаю, что вы использовали 'create-react-app' @ user3900157 – prosti

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