2016-12-05 6 views
-1

Компонент ребенка был в состоянии получить доступ к состоянию, когда он сплющивается -не удается получить доступ к реквизиту объекта

this.state = { 
     name: '', 
     email: '' 
}; 

и Ниже приведен код вида

<Form 
     handleFormChange={this.props.handleFormChange} 
     name={this.props.name} 
     email={this.props.email} /> 

Но когда состояние структурировано в вложенный способ компонент не может получить к нему доступ

this.state = { 
     company: { 
      name: '', 
      email: '' 
     } 
    } 

с этим соответствующим кодом вида

<Form 
     handleFormChange={this.props.handleFormChange} 
     name={this.props.company.name} 
     email={this.props.company.email} /> 

Он заявляет "Не удается прочитать свойство 'имя' в неопределенном (...)"

полный компонент: company.js

export default class Company extends React.Component { 
     constructor(props) { 
      super(props); 
      this.state = { 
       company: { 
        name: '', 
        email: '' 
       } 
      }; 
     }; 
     render() { 
      return (
        <AddCompanyModal 
         activeAddDialog={this.state.activeAddDialog} 
         addDialog={this.addDialog} 
         saveData={this.saveData} 
         handleFormChange={this.handleFormChange} /> 
      ) 
     } 
    } 

addCompanyModal.js

export default class AddCompanyModal extends React.Component { 

    render() { 
     return (
      <Dialog 
       active={this.props.activeAddDialog} 
       onEscKeyDown={this.props.addDialog} 
       onOverlayClick={this.props.addDialog} 
       title='Add Company Information' 
       > 
       <CompanyForm 
        handleFormChange={this.props.handleFormChange} /> 
      </Dialog> 
     ) 
    } 
} 

CompanyForm.js

export default class CompanyForm extends React.Component { 
    render() { 
     return (
      <section> 
       <Input 
        icon='business' 
        type='text' 
        label='Name' 
        name={this.state.company.name} 
        value={this.state.company.name} 
        onChange={this.props.handleFormChange.bind(this, 'name')} /> 
      </section> 
     ) 
    } 
} 

ответ

0

Вы смешанный реквизит и состояние.

<Form 
    handleFormChange={this.props.handleFormChange} 
    name={this.state.company.name} 
    email={this.state.company.email} /> 
+0

о глупая ошибка благодаря –

+0

Если решить вашу проблему, отметьте мой ответ как правильный :) –

+0

теперь его о том - не может прочитать свойство «компании» пустого (...) для названия строки = {this.state.company .name} –

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