В Redux есть несколько отличных идей, и его все еще довольно просто понять (возможно, это одна из причин, почему он так широко принят), тем не менее, я иногда забываю, как делать простые вещи.

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

Если вам нужно минимальное решение, которое отправляет состояние (а не действия) на сервер, вот что мы придумали:

import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import todoApp from './reducers'
import { logError } from "./actions"
import App from './components/App'

let store = createStore(todoApp)

render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
)
if(window) {
  window.onerror = function(msg, url, lineNo, columnNo, error) {
    store.dispatch(logError({ msg, url, lineNo, columnNo, error, state: store.getState() }))
  }
}

Не обращайте внимания на шаблон и сосредоточьтесь на нескольких строках, которые имеют смысл, мы можем отправить любое действие, используя экземпляр хранилища, а также мы можем запросить состояние из него. К счастью, это единственное, что нам нужно :).

Я не говорю, что вы должны развернуть собственное решение для регистрации ошибок, но иногда это проще, чем мы думаем. Иногда вам даже не нужно делать `npm install`, чтобы что-то сделать, и это для меня освобождает.

Примечание о быстрой доставке

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

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