Работа с ReactJS, Redux и Firestore Я получаю сообщение об ошибке при создании новой записи.Однако я не понимаю причину, поскольку я правильно получаю обновленную информацию в Redux, но после создания записи и возвращения для просмотра всех записей я получаю сообщение об ошибке:
TypeError: Невозможно прочитать свойство 'name'of undefined
Если я получаю доступ к визуализации записей, все в порядке, проблема заключается в том, что я создаю новую запись и возвращаюсь для визуализации всех.
Мой ответ jSON выглядит так:
1:
data: {email: "mail@hotmail.com", lastName: "Asdasd", name: "Oscar"}
uid: "2ts2DopIoXoiMVJ6lMKi"
Когда я вернусь, чтобы получить все записи и сделать console.log (this.props.clients), верните это:
0:DocumentReference
firestore:
Firestore {_queue: AsyncQueue, INTERNAL: {…}, _config: FirestoreConfig, _databaseId: DatabaseId, _dataConverter: UserDataConverter, …}
id:(...)
parent:(...)
path:(...)
_firestoreClient:FirestoreClient {platform: BrowserPlatform, databaseInfo: DatabaseInfo, credentials: FirebaseCredentialsProvider, asyncQueue: AsyncQueue, clientId: "BGuRUAvN7ZQxmmNEZmbx", …}
_key:DocumentKey {path: ResourcePath}
__proto__:Object
Это мой код:
Действие: Получить данные из Firestore
export const getFromFirestore= () => async dispatch => {
let res = [];
await db.collection('users').get().then((snapShot) => {
snapShot.docs.map( doc => {
res.push({ uid: doc.id, data: doc.data()});
})
}, error => {
console.log(error)
});
dispatch({
type: GET_CLIENTS,
payload:res
});
}
Редуктор:
case GET_CLIENTS:
return{
...state,
clientsFirestore: action.payload
};
Клиентский компонент Показать данные изFirestore:
class Clients extends Component {
componentDidMount(){
this.props.getFromFirestore();
};
deleteClient = (id) => {
this.props.deleteFirestore(id);
}
render() {
const { clients } = this.props;
return (
<React.Fragment>
<h1 className="display-4 mb-2">
<span className="text-danger">Clients</span>
</h1>
<table className="highlight centered">
<thead>
<tr>
<th>Name</th>
<th>Last Name</th>
<th>Email</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
{clients && clients !== undefined ? clients.map((client, key) => (
<Client
key={key}
id={client.uid}
name={client.data.name}
lastName={client.data.lastName}
email={client.data.email }
deleteClient={this.deleteClient}
/>
)): null }
</table>
</React.Fragment>
);
}
}
Clients.propTypes = {
clients: PropTypes.array.isRequired,
}
const mapStateToProps = (state) => ({
clients: state.clients.clientsFirestore
});
export default connect( mapStateToProps, { getFromFirestore, deleteFirestore } )(Clients);
Спасибо!