未处理的拒绝(TypeError):无法读取 redux 中未定义的属性“道具”

夏尔马

redux在我的应用程序中使用我尝试进行递增和递减。

/动作/index.js

export const INCREMENT = "SCORE_INCREMENT";
export const DECREMENT = "SCORE_DECREMENT";

const scoreAction = {
  increment() {
    return {
      type: INCREMENT
    };
  },

  decrement() {
    return {
      type: DECREMENT
    };
  }
};

export default scoreAction;

/reducers/index.js

import * as actions from "../actions";

const scoreReducer = (state = 0, action) => {
  switch (action.type) {
    case actions.INCREMENT:
      return state + 1;
    case actions.DECREMENT:
      return state - 1;
    default:
      break;
  }
};

export default scoreReducer;

索引.js

import { Provider } from "react-redux";
import { createStore } from "redux";
import scoreReducer from "./reducers";

let store = createStore(scoreReducer);

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

应用程序.js

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
import RoundedButton from "./RoundedButton";
import { connect } from "react-redux";
import { scoreAction } from "./actions/index";
import * as actions from "./actions/index";

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      score: 0
    };
    this.clickitem = this.clickitem.bind(this);
  }

  clickitem(user) {
    var url = "http://localhost:4000/generate-random";
    fetch(url)
      .then(function(response) {
        if (response.status >= 400) {
          throw new Error("Bad response from server");
        }
        return response.json();
      })
      .then(function(data) {
        var computer = data.item;
        console.log("------------------------------------");
        console.log(user + computer);
        console.log("------------------------------------");
        if (
          (user === "Rock" && computer === "Scissors") ||
          (user === "Paper" && computer === "Rock") ||
          (user === "Scissors" && computer === "Paper")
        ) {
          console.log("------------------------------------");
          console.log("User won!!");
          console.log("------------------------------------");
          this.props.increment();
        } else if (user === computer) {
          console.log("------------------------------------");
          console.log("Tie");
          console.log("------------------------------------");
        } else {
          console.log("------------------------------------");
          console.log("Computer won!!");
          console.log("------------------------------------");
          this.props.decrement();
        }
      });
  }

  render() {
    const { store } = this.context;
    console.log("------------------------------------");
    console.log(store);
    console.log("------------------------------------");
    return (
      <div className="AppTitle">
        <b>Score:</b>
        <div>
          <RoundedButton text="Rock" clickitem={this.clickitem} />
          <RoundedButton text="Paper" clickitem={this.clickitem} />
          <RoundedButton text="Scissors" clickitem={this.clickitem} />
        </div>
      </div>
    );
  }
}

function mapStateToProp(state) {
  return { score: state };
}

export default connect(mapStateToProp, actions)(App);

我收到一个错误

Unhandled Rejection (TypeError): Cannot read property 'props' of undefined
(anonymous function)
http://localhost:3000/static/js/bundle.js:18380:15
  18377 |       console.log("------------------------------------");
  18378 |       console.log("Computer won!!");
  18379 |       console.log("------------------------------------");
> 18380 |       this.props.decrement();
        |           ^  18381 |     }
  18382 |   });
  18383 | }
View source

谁能提示我我做错了什么?

维威克

如果可能,请将您的动作创建者功能更改为如下:-

export const INCREMENT = "SCORE_INCREMENT";
export const DECREMENT = "SCORE_DECREMENT";


  export function increment() {
    return {
      type: INCREMENT
    };
  }

  export function decrement() {
    return {
      type: DECREMENT
    };
  }

让我知道这个是否奏效。

同样在您的 clickItem 函数中,将其作为第一行:-

var that = this;

然后使用访问增量和减量

that.props.decrement()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未处理的拒绝(TypeError):无法读取属性

来自分类Dev

未捕获的类型错误:无法读取 react-redux 中未定义的属性“道具”

来自分类Dev

无法获取数据。未处理的拒绝(TypeError):无法读取未定义的属性“ 0”

来自分类Dev

解析Openweathermap请求,未处理的拒绝(TypeError):无法读取未定义的属性“ speed”

来自分类Dev

未处理的拒绝(TypeError):无法读取未定义的属性“当前”

来自分类Dev

反应:未处理的拒绝(TypeError):无法读取未定义的属性“ catch”

来自分类Dev

React.DOM:未处理的拒绝(TypeError):无法读取未定义的属性“地图”

来自分类Dev

未处理的拒绝(TypeError):在做 React 教程时无法读取未定义的属性“映射”

来自分类Dev

未处理的拒绝(TypeError):无法读取未定义的属性“catch”

来自分类Dev

无法读取Redux中未定义的属性“类型”

来自分类Dev

Redux:TypeError:无法读取未定义的属性“模式”

来自分类Dev

如何解决 React 和 Redux 抛出无法读取未定义错误的属性“道具”?

来自分类Dev

TypeError:无法读取react-redux中未定义的属性'map'

来自分类Dev

过滤来自API的用户搜索错误响应:未处理的拒绝(TypeError):无法读取未定义的属性“结果”

来自分类Dev

尽管使用道具而不是状态,但无法读取React-redux上未定义错误的属性“ map”

来自分类Dev

无法读取表单中未定义的属性“道具”

来自分类Dev

未处理的拒绝(类型错误):无法读取未定义的属性“状态”

来自分类Dev

未处理的承诺拒绝错误:无法读取未定义的属性“json”

来自分类Dev

未处理的承诺拒绝:无法读取未定义值的属性“推送”

来自分类Dev

未处理的拒绝 SequelizeEagerLoadingError: 未关联,并且无法读取未定义的属性“getTableName”

来自分类Dev

未处理的拒绝(类型错误):比较 id 时无法读取未定义的属性“”

来自分类Dev

React Redux:无法读取未定义的属性“ props”

来自分类Dev

React-Redux:无法读取未定义的属性“ closed”

来自分类Dev

redux 表单验证 - 无法读取未定义的属性“某些”

来自分类Dev

Redux 获取无法读取未定义的属性映射

来自分类Dev

无法读取未定义的属性“getState” - Redux

来自分类Dev

无法读取react-redux中未定义的属性“对象中的某个字段”

来自分类Dev

未处理的拒绝(TypeError):无法解构“ Object(...)(...)”的属性“ setUser”,因为未定义

来自分类Dev

Redux 中的动作创建者给出错误:TypeError:无法读取未定义的属性“过滤器”

Related 相关文章

  1. 1

    未处理的拒绝(TypeError):无法读取属性

  2. 2

    未捕获的类型错误:无法读取 react-redux 中未定义的属性“道具”

  3. 3

    无法获取数据。未处理的拒绝(TypeError):无法读取未定义的属性“ 0”

  4. 4

    解析Openweathermap请求,未处理的拒绝(TypeError):无法读取未定义的属性“ speed”

  5. 5

    未处理的拒绝(TypeError):无法读取未定义的属性“当前”

  6. 6

    反应:未处理的拒绝(TypeError):无法读取未定义的属性“ catch”

  7. 7

    React.DOM:未处理的拒绝(TypeError):无法读取未定义的属性“地图”

  8. 8

    未处理的拒绝(TypeError):在做 React 教程时无法读取未定义的属性“映射”

  9. 9

    未处理的拒绝(TypeError):无法读取未定义的属性“catch”

  10. 10

    无法读取Redux中未定义的属性“类型”

  11. 11

    Redux:TypeError:无法读取未定义的属性“模式”

  12. 12

    如何解决 React 和 Redux 抛出无法读取未定义错误的属性“道具”?

  13. 13

    TypeError:无法读取react-redux中未定义的属性'map'

  14. 14

    过滤来自API的用户搜索错误响应:未处理的拒绝(TypeError):无法读取未定义的属性“结果”

  15. 15

    尽管使用道具而不是状态,但无法读取React-redux上未定义错误的属性“ map”

  16. 16

    无法读取表单中未定义的属性“道具”

  17. 17

    未处理的拒绝(类型错误):无法读取未定义的属性“状态”

  18. 18

    未处理的承诺拒绝错误:无法读取未定义的属性“json”

  19. 19

    未处理的承诺拒绝:无法读取未定义值的属性“推送”

  20. 20

    未处理的拒绝 SequelizeEagerLoadingError: 未关联,并且无法读取未定义的属性“getTableName”

  21. 21

    未处理的拒绝(类型错误):比较 id 时无法读取未定义的属性“”

  22. 22

    React Redux:无法读取未定义的属性“ props”

  23. 23

    React-Redux:无法读取未定义的属性“ closed”

  24. 24

    redux 表单验证 - 无法读取未定义的属性“某些”

  25. 25

    Redux 获取无法读取未定义的属性映射

  26. 26

    无法读取未定义的属性“getState” - Redux

  27. 27

    无法读取react-redux中未定义的属性“对象中的某个字段”

  28. 28

    未处理的拒绝(TypeError):无法解构“ Object(...)(...)”的属性“ setUser”,因为未定义

  29. 29

    Redux 中的动作创建者给出错误:TypeError:无法读取未定义的属性“过滤器”

热门标签

归档