Измените свой код на что-то вроде ниже.
Вам нужно получать электронные письма, когда нажимается кнопка, поэтому для этого вам нужна функция обработчика событий, но не метод componentDidMount.Вы не можете вызывать метод componentDidMount в качестве функции обработчика событий.
Также, когда вы отображаете электронные письма в цикле, вам нужно установить уникальный ключ для верхнего элемента внутри цикла.Ключом может быть индекс или уникальный идентификатор из данных.Похоже, у вас нет уникального идентификатора из массива электронных писем, поэтому вы можете использовать индекс в качестве ключа, как показано ниже
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import {Link} from "react-router";
import axios from 'axios';
export class GetEmailsComponent extends Component {
state = {
emails: []
}
getEmails = () =>{
//this.setState({emailList : undefined});
axios.get('./api/EmailAddresses')
.then(response => {
this.setState({emails: response.data});
console.log(response.data);
}).catch(function (error) {
console.log(error);
});
}
render() {
return (
<div>
<ul>
{this.state.emails.map((email, index)=> <li key={"Key-"+index}>{email}</li>)}
</ul>
<button type="button" onClick={()=> this.getEmails()}>Get all mails</button>
</div>
)
}
}