Реагируйте на перехватчики Redux в Gatsby с помощью Dispatch "Invalid hook call" - PullRequest
0 голосов
/ 02 декабря 2019

Я пытаюсь использовать Redux в моем проекте Gatsby. Я использовал Redux раньше, но никогда раньше не использовал Hooks. Я подумал, что, возможно, это проблема с Гэтсби, но я смог использовать хук useStaticQuery (как вы можете видеть в builder.js ниже). Я проверил все версии (см. Ниже) и правила.

Вот ошибка, которую я получаю:

enter image description here

Версии:

список пряжи реагирует

react@16.12.0

список пряжи реагирует-редукс

react-redux@7.1.3

список пряжи редуцирует

redux@4.0.4

Вот мой код builder.js.

import {graphql, useStaticQuery} from 'gatsby'
import React from "react"
import Armor from './armor'

export default () => {

  const data = useStaticQuery(graphql`
    query Data {
      allArmor(filter: {type: {eq: "chest"}}) {
        totalCount
        nodes {
          name
          attack
          magic
        }
      }
    }`)

  return (
    <div>
      <h1>{data.nodes[0]}</h1>
      <Armor/>
    </div>
  )
}

Вот мой код armor.js. (Это то место, где выдается ошибка)

import React from "react"
import { useDispatch } from 'react-redux'

export default () => {

  const dispatch = useDispatch()

  return (
    <button onClick={() => dispatch({type: 'INCREMENT' })}>Increment</button>
  )
}

Код, связанный с Gatsby для redux:

gatsby-browser.js

import wrapWithProvider from './wrap-with-provider'
export const wrapRootElement = wrapWithProvider

gatsby-ssr.js

import wrapWithProvider from './wrap-with-provider'
export const wrapRootElement = wrapWithProvider

wrap-with-provider.js

import React from 'react'
import { createStore, combineReducers } from 'redux'
import { Provider } from 'react-redux'

import * as reducers from './src/redux/reducers'

const initialState = {
  setCount: 0,
  setTotal: 0,
}

const combinedReducers = combineReducers({ ...reducers })
export default ({ element }) => {
  const store = createStore(combinedReducers, initialState)
  return <Provider store={store}>{element}</Provider>
}

redux / redurs / index.js

const setCount = (state = 0, action) => {
  switch (action.type) {
    case `UPDATE`:
      return action.count

    default:
      return state
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...