2017-02-19 47 views
2

在react-typescript项目中使用mobx。这个类中设置观察到的阵列提取API:将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?请注意,在第一次渲染menuItems将是未定义的,因为它只获取它的第一个值后,提取已解决,这应该产生第二个渲染。

请注意,App应该是observer,因为这是引用menuItems可观察值的那个。 (欲了解更多信息:https://mobx.js.org/best/react.html

+0

其实你已经解决了我与你在Twitter分享的文章链接的问题。谢谢 :) – TyForHelpDude