2017-02-19 3 views
2

Использование mobx в проекте response -criptcript. Этот класс устанавливается наблюдаемый массив выборки апи:pass mobx наблюдаемые данные в реквизитах

class MenuRepo { 
    @observable menuItems?: IMenuModel[];//=[{Id:1,itemName:"asd",childItems:[]}]; 
    @action getItems(): void { 
    fetch(`...`) 
     .then((response: { value: IMenuModel[] }): void => { 
     this.menuItems = [ 
      { Id: 1, itemName: 'test-item1', childItems: [] } 
     ]; 
     }); 
    } 

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

@observer 
class Menu extends React.Component<{params?:IMenuModel[]}, {}> { 
    render() { 
    debugger 
    var menuJSX : JSX.Element[] = this.props.params ? this.props.params.map((item:IMenuModel, i:number)=>{ 
     return (<li key={item.Id}>{item.itemName}</li>) 
    }):[]; 
    return (...) 

но PARAMS «не определен». Я смотрел некоторые уроки о mobx &, но не смог его решить.

и здесь App.tsx файл:

import menuCodes from './components/Codes'; 
class App extends React.Component<null, null> { 
    render() { 
    return (
     <div className="App"> 
     <Menu params = {asd.menuItems}/> 
     </div> 
    ); 
    } 
} 
export default App; 

ответ

1

является asd InstanceOf MenuRepo? Обратите внимание, что в первом меню renderItems будет неопределенным, так как он только получит его первое значение после того, как выборка разрешилась, что должно произвести второй рендеринг.

Отметьте, что App должно быть observer, поскольку это является разыменованием menuItems. (Для получения дополнительной информации: https://mobx.js.org/best/react.html)

+0

Фактически u уже решил мою проблему со ссылкой на статью, которую вы делили в твиттере. Спасибо :) – TyForHelpDude