2016-10-26 4 views
4

Так что я только что попробовал получить диалоговое окно материала Google. Я очень новичок в метеоре и реагирую так, чтобы answare мог быть более очевидным для вас тогда для меня.Отсутствие свойств свойств класса

даже так, моя консоль дает мне эту ошибку:

Missing class properties 
    transform. 

на линии 16 в этом файле:

export default class DialogExampleCustomWidth extends React.Component { 

    state = { 
    open: false, 
    }; 

    handleOpen =() => { 
    this.setState({open: true}); 
    }; 

    handleClose =() => { 
    this.setState({open: false}); 
    }; 

    render() { 
    const actions = [ 
     <FlatButton 
     label="Cancel" 
     primary={true} 
     onTouchTap={this.handleClose} 
     />, 
     <FlatButton 
     label="Submit" 
     primary={true} 
     onTouchTap={this.handleClose} 
     />, 
    ]; 

    return (
     <div> 
     <RaisedButton label="Dialog With Custom Width" onTouchTap={this.handleOpen} /> 
     <Dialog 
      title="Dialog With Custom Width" 
      actions={actions} 
      modal={true} 
      contentStyle={customContentStyle} 
      open={this.state.open} 
     > 
      This dialog spans the entire width of the screen. 
     </Dialog> 
     </div> 
    ); 
    } 
} 

на state = { появляется ошибка я прочитал на нескольких articals, но похоже, не может его получить. Спасибо за вашу помощь и время

+0

Свойства экземпляра не стандартизированы в JS. Вам нужно инициализировать свое состояние в конструкторе. 'constructor() {this.state = ...}' – zerkms

+0

он говорит, что «это» недопустимо перед супер @zerkms –

+0

so-call 'super()'? – zerkms

ответ

0

Изменить свои коды, как это:

export default class DialogExampleCustomWidth extends React.Component { 

    consructor(props){ 
    super(props); 
    this.state = { 
     open: false, 
    }; 

    handleOpen =() => { 
    this.setState({open: true}); 
    }; 

    ...... 
} 
0

Если вы хотите установить начальное значение состояния, оно должно быть установлено в конструкторе.

Примером может служить следующее:

constructor(props) { 
    super(props) 
    this.state = { 
     open: false 
    } 
} 

2 вещи, чтобы указать здесь:

  1. Вы всегда должны вызывать базовый класс с супер(), если вы используете конструктор
  2. Вы передаете реквизиты базовому классу, если хотите иметь доступ к this.props в конструкторе. В этом случае super() будет делать, так как вы не получаете доступ к this.props.

читать далее here и here (от React команды напрямую)

9

Meteor не поддерживает функции курсора по умолчанию, но сегодня вы можете просто изменить, что:

add the following package:

meteor npm install --save-dev babel-plugin-transform-class-properties 

Измените свой пакет.json в своем проекте и добавьте сюда следующее: the package work:

"babel": { 
    "plugins": ["transform-class-properties"] 

    } 
+1

Этот ответ работал отлично. Nitpicking, но функции стрелки поддерживаются через метеорит, просто свойства класса не являются. – icc97

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