2017-02-19 67 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