首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >function / Redux TypeError:无法将类作为函数调用

function / Redux TypeError:无法将类作为函数调用
EN

Stack Overflow用户
提问于 2019-10-15 10:10:46
回答 2查看 1.1K关注 0票数 0

我得到了这个错误(试图学习redux/react),不确定错误来自何处.

我试着在这里和谷歌上找到答案,但我所做的一切都没有解决这个问题。

我还在学习,所以如果你能提供一个全面的解决方案,我们会非常感激的:)

index.js

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';

import { Provider } from 'react-redux'
import { store } from './redux/store'

import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById("root")
);

*App.js

代码语言:javascript
复制
import React, { Component } from 'react';
import { connect } from 'react-redux'
import { toggle } from "./redux/action";
import './App.css';

class App extends Component {

  render() {
    return (
      <div>
         {this.props.toggle ? <h1>Hi</h1> : <h1>Bye</h1>}
        <button onClick={this.props.onToggle}>Click Me</button>
      </div>
    )
  }
}


const mapStateToProps = state => {
  return {
    toggle: state.isCorrect
  };
}

const mapsDispatchToProps = dispatch => {
  return {
    onToggle: (bool) => dispatch(toggle(bool))
  };
}

export default connect(mapStateToProps, mapsDispatchToProps)(App)

store.js

代码语言:javascript
复制
import {createStore, applyMiddleware, compose} from 'redux'
import thunk from 'react-thunk'

const INITIAL_STATE = {
    isCorrect: false
}

const reducer = (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case 'IS_CORRECT':
      return {
          ...state,
        isCorrect: state.isCorrect = !state.isCorrect
      }
  }
  return state;
};

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

export const store = createStore(
         reducer,
         composeEnhancers(applyMiddleware(thunk))
       );

action.js

代码语言:javascript
复制
export const toggle = (bool) => {
    return {
      type: "IS_CORRECT",
      state: bool
    };
}

误差

代码语言:javascript
复制
index.js:37 Uncaught TypeError: Cannot call a class as a function
    at _classCallCheck (index.js:37)
    at ReactThunk[Component] (index.js:80)
    at redux.js:644
    at <anonymous>:1:28399
    at createStore (redux.js:79)
    at Module../src/redux/store.js (store.js:21)
    at __webpack_require__ (bootstrap:785)
    at fn (bootstrap:150)
    at Module../src/index.js (index.css?e32c:37)
    at __webpack_require__ (bootstrap:785)
    at fn (bootstrap:150)
    at Object.0 (serviceWorker.js:135)
    at __webpack_require__ (bootstrap:785)
    at checkDeferredModules (bootstrap:45)
    at Array.webpackJsonpCallback [as push] (bootstrap:32)
    at main.chunk.js:1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-15 11:12:42

错误在store.js文件中,您正在错误地导入thunk。

代码语言:javascript
复制
import thunk from 'redux-thunk'

它应该是“还击”,而不是像上面那样的反应。

票数 2
EN

Stack Overflow用户

发布于 2019-10-15 10:30:17

代码语言:javascript
复制
class App extends Component {

  render() {
    return (
      <div>
         {this.props.toggle ? <h1>Hi</h1> : <h1>Bye</h1>}
        <button onClick={() => this.props.onToggle(!this.props.toggle)}>Click Me</button>
      </div>
    )
  }
}

不确定这是否解决了issue.Providing完全错误堆栈会有很大帮助。并提供./redux/actions.js文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58392208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档