检索数据并设置obseravble数组,这里的代码如下: import {observable} from 'mobx';export interface IMenuModel{ Id:number itemName:string; parentId?:number; } class MenuRepo { @observable menuItems? : IMenuModel[]; constructor()
import {observable} from 'mobx'; export interface IMenuModel{ Id:number itemName:string; parentId?:number; } class MenuRepo { @observable menuItems? : IMenuModel[]; constructor(){ } getItems():void { fetch(`..`).then((response: Response): Promise<{ value:IMenuModel[] }> => { return response.json(); }) .then((response: { value: IMenuModel[] }) : void => { this.menuItems = response.value; }, (error: any): void => { //exception handling }); } } var menuCodes = new MenuRepo export default menuCodes;
这是观察者阶级;
import * as React from 'react'; import {observer} from 'mobx-react'; import {IMenuModel} from './Codes'; @observer class Menu extends React.Component<{params?:IMenuModel[]}, {}> { render() { debugger var menuJSX : JSX.Element[] = this.props.params.map((item:IMenuModel, i:number)=>{ return (<li key={item.Id}>{item.itemName}</li>) }); return ( <div> Hello World!!!! <br /> {menuJSX} </div> ); } } export default Menu;
我也遇到上面的错误(“this.props.params”下划线红色):对象可能是“未定义的”
无法解决如何修复它…这是主要组成部分;
import menuCodes from './components/Codes'; class App extends React.Component<null, null> { render() { return ( <div className="App"> <Menu params = {menuCodes.menuItems}/> </div> ); } }这是我相信的一个Typescript特定错误.
菜单组件中的params prop是可选的.所以,我假设在您的MenuCodes组件中,menuCodes.menuItems有时可能未定义.
如果您要映射this.props.params,并且在某些时候可能未定义,则需要在menuJSX变量的赋值中包含一个条件,以便在menuCodes.menuItems(以及props.params)未定义时进行说明.
像这三元的东西:
const { params } = this.props var menuJSX : JSX.Element[] = params ? params.map((item:IMenuModel, i:number) => <li key={item.Id}>{item.itemName}</li> ) : [];