gpt4 book ai didi

reactjs - "Object is possibly undefined"用于可观察字段

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:14 27 4
gpt4 key购买 nike

获取数据并设置可观察数组,代码如下:

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”下划线为红色):Object is possibly 'undefined'

不知道如何修复它..这是主要组件;

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

最佳答案

我认为这是一个特定于 Typescript 的错误。

Menu 组件中的 params 属性是可选的。因此,我假设在您的 MenuCodes 组件中,menuCodes.menuItems 有时可能是 undefined

如果你在 this.props.params 上映射,并且它可能在某些时候未定义,你需要在你的 menuJSX 变量的赋值中包含一个条件说明 menuCodes.menuItems(以及 props.params)何时为 undefined

像这样的三元组:

const { params } = this.props
var menuJSX : JSX.Element[] = params
? params.map((item:IMenuModel, i:number) =>
<li key={item.Id}>{item.itemName}</li>
)
: [];

关于reactjs - "Object is possibly undefined"用于可观察字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42301609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com