Реагировать на пустое состояние - состояние остается нулевым после setState - PullRequest
0 голосов
/ 06 апреля 2020

Я удалил импорт, потому что он не является проблемой

В моем рендере я установил свое состояние, и оно показывается мне в консоли, но когда я пытаюсь отобразить его , это ноль, и он говорит мне, что в состоянии "allInfo" нет элементов, как я могу исправить эту ошибку, чтобы мое состояние обновлялось?

Класс Friends расширяет Компонент {

constructor(props) {
    super(props)
    this.state = {
        allInfo: []
    }
}

render() {

    fetch('https://localhost:44314/api/Users')
        .then(response => response.json())
        .then(data => {
            this.setState(prevState => {
                allInfo: data.map((obj) => { prevState.allInfo.push(obj) })
            })
        })

return (
    <div>
        <NavMenu />
        <div style={{ fontSize: 38, textAlign: "center", color: "white" }}>FRIENDS</div>
        <TableContainer component={Paper}>
            <Table aria-label="simple table">
                <TableHead>
                    <TableRow>
                        <TableCell>Users</TableCell>
                        <TableCell align="right">Follow</TableCell>
                    </TableRow>
                </TableHead>
                <TableBody>
                    {this.state.allInfo.map((row) => (
                        <TableRow key={row.username}>
                            <TableCell component="th" scope="row">
                                {row.username}
                            </TableCell>
                            <TableCell align="right">Follow?</TableCell>
                        </TableRow>
                    ))}
                </TableBody>
            </Table>
        </TableContainer>
  </div>
);

}}

экспорт по умолчанию Друзья

Ответы [ 2 ]

1 голос
/ 06 апреля 2020
fetch('https://localhost:44314/api/Users')
    .then(response => response.json())
    .then(data => {
        this.setState(prevState => {
            allInfo: data.map((obj) => { prevState.allInfo.push(obj) })
        })
    })

Pu sh возвращает длину массива.

Вы должны просто использовать:

this.setState(prevState => {
            allInfo: data
        })
0 голосов
/ 06 апреля 2020

Многое, вы используете fetch, а затем, что больше не рекомендуется, используйте


async render() {

   let response = await fetch('https://localhost:44314/api/Users')
            this.setState(prevState => {
                allInfo: data.map((obj) => { prevState.allInfo.push(obj) })
            })

, но, более подробно объясняя вашу проблему, вы, эта ссылка, не входит в тогдашнюю область, поэтому вы Если задать нулевое значение, вы получите ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...