Ошибка использования Redux @connect [duplicate]

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

Это особенно полезно, если данные грубые, и интерполяция данных не нужна. В этом случае использование maskoceans создает очень зернистый контур береговых линий, который выглядит не очень хорошо.

Вот тот же пример, который я отправил как ответ на другой вопрос:

from matplotlib import pyplot as plt
from mpl_toolkits import basemap as bm
from matplotlib import colors
import numpy as np
import numpy.ma as ma
from matplotlib.patches import Path, PathPatch

fig, ax = plt.subplots()

lon_0 = 319
lat_0 = 72

##some fake data
lons = np.linspace(lon_0-60,lon_0+60,10)
lats = np.linspace(lat_0-15,lat_0+15,5)
lon, lat = np.meshgrid(lons,lats)
TOPO = np.sin(np.pi*lon/180)*np.exp(lat/90)

m = bm.Basemap(resolution='i',projection='laea', width=1500000, height=2900000, lat_ts=60, lat_0=lat_0, lon_0=lon_0, ax = ax)
m.drawcoastlines(linewidth=0.5)

x,y = m(lon,lat)
pcol = ax.pcolormesh(x,y,TOPO)

##getting the limits of the map:
x0,x1 = ax.get_xlim()
y0,y1 = ax.get_ylim()
map_edges = np.array([[x0,y0],[x1,y0],[x1,y1],[x0,y1]])

##getting all polygons used to draw the coastlines of the map
polys = [p.boundary for p in m.landpolygons]

##combining with map edges
polys = [map_edges]+polys[:]

##creating a PathPatch
codes = [
    [Path.MOVETO] + [Path.LINETO for p in p[1:]]
    for p in polys
]
polys_lin = [v for p in polys for v in p]
codes_lin = [c for cs in codes for c in cs]
path = Path(polys_lin, codes_lin)
patch = PathPatch(path,facecolor='white', lw=0)

##masking the data:
ax.add_patch(patch)

plt.show()

В результате получается следующий график:

Надеюсь, это кому-то поможет:)

3
задан hjm 15 August 2017 в 17:52
поделиться

3 ответа

Попробуйте вот так:

const stateMap = (state) => {
    console.log('state', state);
    return {
        //something from state
    };
};

export default connect(stateMap)(App);
2
ответ дан Andrew 17 August 2018 в 11:27
поделиться
  • 1
    Когда я использую этот ответ, я получаю эту ошибку и «экспорт» по умолчанию (импортированный как «connect») не найден в «реакции-редукции» – hjm 15 August 2017 в 17:38
  • 2
    Является ли ваш импорт фигурными фигурными скобками? import {connect} из 'react-redux'; – Andrew 15 August 2017 в 17:51
  • 3
    исправлено и отредактировано спасибо! – hjm 15 August 2017 в 18:31
  • 4
    Рад помочь :) – Andrew 15 August 2017 в 18:32

Сначала я хотел бы отметить, что я согласен с ответом @ markerikson, используйте функцию вместо декоратора.

Если вы сделали , хотите использовать декораторы, хотя, было бы еще несколько шагов. Вы добавили плагин к своим зависимостям, но не сказали Бабелю использовать его.

Создать приложение React использует Webpack с Babel под капотом, а именно, в сценариях реагирования. Вам нужно настроить эту настройку Babel. Способ создания «Создать приложение для реагирования» - это изгнать из приложения «Создать реакцию», а затем отредактировать .babelrc - см. https://babeljs.io/docs/plugins/transform-decorators/ # использование-через-babelrc-рекомендуется -

5
ответ дан Andy_D 17 August 2018 в 11:27
поделиться

Обратите внимание, что команды React и Redux обычно препятствуют использованию декораторов. Вместо этого в этом случае вы должны использовать функцию connect() как функцию:

export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
4
ответ дан markerikson 17 August 2018 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: