Я пытаюсь использовать Redux в моем проекте Gatsby. Я использовал Redux раньше, но никогда раньше не использовал Hooks. Я подумал, что, возможно, это проблема с Гэтсби, но я смог использовать хук useStaticQuery (как вы можете видеть в builder.js ниже). Я проверил все версии (см. Ниже) и правила.
Вот ошибка, которую я получаю:
Версии:
список пряжи реагирует
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
}
}