2015-12-22 3 views
0

Я пытаюсь узнать, как реагировать и создавать небольшое приложение, которое принимает имена, а затем отображает имена.Реагировать - что я делаю неправильно?

У меня есть форма ввода, и я могу получить данные из формы ввода после нажатия submit в мой объект состояния names.

однако я застрял на переход государства от родителя к другому компоненту, который находится внутри моего ShowNames компонента:

Так, в App Store, я делаю это делает:

render : function() { 
     return (
      <div> 
       <InputName addToState={this.addToState}/> 
       <ShowName renderName={this.renderName}/> 
      </div> 
     ) 
    } 
}); 

Тогда ShowName компонент имеет следующие:

var ShowName = React.createClass({ 

    render : function() { 
     return (
      <ListOfNames renderName={this.props.renderName}/> 
     ) 
    } 
}); 

Так что я сделал

var ListOfNames = React.createClass({ 

    render : function() { 
     return (
      <ul renderName={this.props.renderName}> 
       {Object.keys(this.state.names).map(this.renderName)} 
      </ul> 
     ) 
    } 
}); 

Но проблема в том, что он говорит, что не может читать имена свойств "null". Может кто-нибудь помочь?

+0

'state' не определенно для' ListOfNames' компонента –

+0

как передать состояние, которое хранится в {имен} вниз? Мне нужно создать еще что-то вроде passState = {this.state.names}? – user3152131

ответ

1

Вам необходимо инициализировать состояние, иначе состояние будет пустым.

React.createClass({ 
    getInitialState: function() { 
     return { names: [] }; 
    }, 

    // all the rest here 
} 

EDIT

после просмотра кода я заметил несколько ошибок, обновленный код теперь здесь: http://jsbin.com/sewoxu/edit?js,output

Так что главная ошибка в том, что функция визуализации от ShowName было использовано государство, чтобы получить наименования, но имена, которые передавались через имущество:

<ShowName renderName={this.renderName} names={this.state.names}/> 

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

this.props.names 

Кроме того, в примере я переместил renderName функции внутри ShowName компонента.

Надеется, что это помогает :)

+0

привет сэр Я это уже в copmonent App: 'getInitialState: функция() { \t \t возвращение { \t \t \t имен: {} \t \t} \t},' – user3152131

+0

@ user3152131 вы можете привести пример на jsbin или jsfiddle? :) – patrick

+0

, пожалуйста, извините, что сайт не загружается для меня, можете ли вы увидеть на pastebin? http://pastebin.com/8AMY39y3 – user3152131

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