Мне кажется, проблема в том, как вы вводите свой элемент в метод render ().
У вас есть:
{this.state.data.map((n, index) => {
return (
<tr key={index}>
<td component="th" scope="row">
{n.market_cap_rank}
</td>
<td> {n.name} </td>
Я поэкспериментировал с вашим JSFiddle и обнаружил, что его привязка к идентификатору элементов данных (n.id) приводит к тому, что фильтры работают должным образом.
Я изменил его, как показано ниже (обратите внимание на ключ на первом элементе):
{this.state.data.map((n, index) => {
return (
<tr key={n.id}>
<td component="th" scope="row">
{n.market_cap_rank}
</td>
<td> {n.name} </td>
Вот ссылка на мой форк вашего JSFiddle https://codesandbox.io/s/intelligent-violet-6ixcm
Имейте в виду, что это не сохраняет этот по общему признанию очень плавный переход на линейных графиках, но это, мы надеемся, должно указать вам правильное направление.