Javascript 访问数组时出现问题-类型上不存在

Javascript 访问数组时出现问题-类型上不存在,javascript,arrays,reactjs,typescript,sharepoint,Javascript,Arrays,Reactjs,Typescript,Sharepoint,我正在使用SharePoint SPFX中的Typescript React构建一个应用程序。我正在尝试使用数组中的元素构建一个表 在我的componentDidMount()中,我有以下代码来创建数组 public componentDidMount() { pnp.sp.web.lists.getByTitle("List").items.get().then((items: any[]) => { const listItems = it

我正在使用SharePoint SPFX中的Typescript React构建一个应用程序。我正在尝试使用数组中的元素构建一个表

在我的
componentDidMount()
中,我有以下代码来创建数组

public componentDidMount() { 

        pnp.sp.web.lists.getByTitle("List").items.get().then((items: any[]) => {

            const listItems = items.map((item) => {

                return {
                    UsersName: item.Title,
                    UserEmail: item.Email,
                    UserStatus: item.Status,
                    UserLocation: item.Location,                        
                }
            });
            console.log(listItems);


        });

}
在我的渲染中,我现在有一个硬编码,用于显示表格:

public render(): React.ReactElement<ISigninLocationWebpartProps> {

    return (

        <div className={ styles.signinLocationWebpart }>

            <div style={{ maxWidth: "100%" }}>

            <MaterialTable
                title=""
                columns={[
                { title: 'Name', field: 'name' },
                { title: 'Surname', field: 'surname' },
                { title: 'Birth Year', field: 'birthYear', type: 'numeric' },
                {
                    title: 'Birth Place',
                    field: 'birthCity',
                    lookup: { 34: 'İstanbul', 63: 'Şanlıurfa' },
                },
                ]}
                data={[
                { name: 'Mehmet', surname: 'Baran', birthYear: 1987, birthCity: 63 },
                { name: 'Zerya Betül', surname: 'Baran', birthYear: 2017, birthCity: 34 },
                ]}        
                options={{
                filtering: true
                }}
            />


            </div>

        </div>
    );
} 
public render():React.ReactElement{
返回(
);
} 
我试图用我的
listItems
数组中的元素替换数据部分。所以我做了一些类似于
data={UserList}
data={this.UserList}
的事情,两个都有错误。我需要设置数组的状态才能访问它吗?

import React,{Component}来自'React';
import React, { Component } from 'react';

class Test extends Component {

    constructor(props) {
        super(props);

        this.state = {
            UserList: []
        }

    }


    componentDidMount() {
        //suppose pnp obj's coming from props
        const { pnp } = this.props;
        pnp.sp.web.lists.getByTitle("List").items.get().then((items: any[]) => {
            const listItems = items.map((item) => {
                return {
                    UsersName: item.Title,
                    UserEmail: item.Email,
                    UserStatus: item.Status,
                    UserLocation: item.Location,
                }
            });


            this.setState({ UserList: [...listItems] });


        });

    }

    render(): React.ReactElement<ISigninLocationWebpartProps> {

        return (

            <div className= { styles.signinLocationWebpart } >

                <div style={ { maxWidth: "100%" } }>

                    <MaterialTable
                        title=""
                        columns = {
                            [
                                { title: 'Name', field: 'name' },
                                { title: 'Surname', field: 'surname' },
                                { title: 'Birth Year', field: 'birthYear', type: 'numeric' },
                                {
                                    title: 'Birth Place',
                                    field: 'birthCity',
                                    lookup: { 34: 'İstanbul', 63: 'Şanlıurfa' },
                                },
                                ]}
                        data = {this.state.UserList}
                        options = {
                            {
                                filtering: true
                            }
                        }
                    />

                    Debug: {JSON.stringify(this.state.UserList)}

                < /div>

            < /div>
    );

}

export default test;
类测试扩展了组件{ 建造师(道具){ 超级(道具); 此.state={ 用户列表:[] } } componentDidMount(){ //假设pnp obj来自道具 const{pnp}=this.props; pnp.sp.web.lists.getByTitle(“列表”).items.get()。然后((items:any[])=>{ const listItems=items.map((item)=>{ 返回{ UsersName:item.Title, UserEmail:item.Email, UserStatus:item.Status, UserLocation:item.Location, } }); this.setState({UserList:[…listItems]}); }); } render():React.ReactElement{ 返回( 调试:{JSON.stringify(this.state.UserList)}
); } 导出默认测试;
谢谢您的回复。所以我在我的道具中设置了状态,并做了您的更改。现在我在控制台
\u this.props.data不是MaterialTable的函数。
另外,当我在控制台日志
console.log(this.state.UserList)时;
在我的公共呈现中,它返回一个空数组。根据您的问题,我将上面的状态变量重命名为UserList。我还添加了以下行:Debug:{JSON.stringify(this.state.UserList)}调试数据。由于错误w/MaterialTable可能与该组件的其他方面有关。好了,我想你是对的,当我删除该表组件并添加调试时,它会吐出数组,所有内容都在其中。但是,当我添加表时,它会给我相同的this.props.data error.wird.。你应该看看对于MaterialTable组件文档。因此,我在文档中找不到任何内容。我认为这是像函数一样调用this.prop.data的方式。在material-table.js中,这是我遇到的错误。这里有一个屏幕截图链接:
https://ibb.co/F5MLn06