Не удается прочитать свойства null (чтение «тип»)

#javascript #reactjs #react-native

Вопрос:

У меня проблема с картой, я не понимаю, почему она выдает мне ошибку не удается прочитать свойства null, элементы, которые находятся в массиве, также не содержат нулей, поэтому я не понимаю, почему эта ошибка возникает у меня.

 state = {
    tableHead: [
        '', 'Lunedi', 'Martedi', 'Mercoledi'
    ],
    tableData: {
        value: [
            [{ name: 'David', event1: { test: 'prova', test1: 'prova2' }}],
            [{ name: 'Lorenz', event1: { test: ['2', 'test'] }, event2: '3', event3: '4' }],
            [{ name: 'Victor', event1: { test: ['2', 'test'] }, event2: '3', event3: '4' }],
            [{ name: 'Franklyn', event1: { test: ['2', 'test'] }, event2: '3', event3: '4' }],
        ],
    },
 

это мой компонент Рендеринга:

<Стиль границы таблицы={{ Цвет границы: ‘прозрачный’ }}>

                             <Row data={this.state.tableHead} style={styles.head} textStyle={styles.text} />

                            {
                                this.state.tableData.value.map((rowData, index) => {
                                    console.log('test', rowData),
                                        <TableWrapper key={index} style={styles.row}>
                                            {
                                                rowData.map((item, index) => {
                                                    console.log('item', item.name),
                                                        <Text textStyle={styles.text}>{item.name} </Text>
                                                })
                                            }
                                        </TableWrapper>
                                })
                            }

                        </Table>
                 
 

Ответ №1:

Это просто, просто добавьте ? перед картой. Пример :

 this.state.tableData?.value?.map [your code]

rowData?.map [your code]
 

Комментарии:

1. Подумайте о том, чтобы объяснить, что такое ? оператор и как он решает проблему OPs

Ответ №2:

УиллМоунт

 state = undefined;
 

ДидМоунт:

 state = <your data>;
 

Ваша функция рендеринга запускается до того, как состояние имеет значение

Решение таково: сначала вы должны проверить данные

 this.state.tableData?.value?.map
rowData?.map
 

Проверьте это: Необязательная цепочка