私はこの回答を検索しましたが、私の問題と一致するものは見つかりませんでした。 React & Reduxを使用して電卓アプリを構築しようとしていて、数字ボタンの1つをクリックすると、「this.props.AppendCharacterは関数ではありません」というエラーが表示されますReact-Redux:this.props.AppendCharacterは関数ではありません
ここに私の関連コードはあります:あなたのを変更することで、あなたが必要なものを達成することができ
number_button.js
import React, {Component} from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import AnswerScreen from '../containers/answer_screen';
import AppendCharacter from '../actions/index';
class NumberButton extends Component {
constructor(props) {
super(props);
this.state = { button: '' };
this.clickButton = this.clickButton.bind(this);
};
clickButton() {
this.props.AppendCharacter(this.props.number);
console.log('clicked on ', this.props.number);
this.setState({ button: this.props.number });
}
render(props) {
return (
<div className="number-button general-button" onClick={this.clickButton}>
{this.props.number}
</div>
);
};
};
function mapDispatchToProps(dispatch) {
return bindActionCreators({ AppendCharacter }, dispatch);
};
export default connect(null, mapDispatchToProps)(NumberButton);
アクション/ index.js
export function AppendCharacter(character) {
return {
type: APPEND,
payload: character
};
};
ありがとうございます。私はそれを試しましたが、 "Uncaught TypeError:(0、_index2.default)は関数ではありません"という別のエラーが発生しました (ああ、私はおそらく、私はその部分を追加してからデザインを変更しました。そのコメントをありがとうございます。) – PirateJohn
あなたは近くです。このような音はあなたの問題を解決しました。今、あなたは '輸入'と '輸出'の仕方を再検討する必要があります。あなたが意図したときに(あるいはそれを意味しなかったときに)、あなたは 'デフォルトの'エクスポートを持っているかもしれない(そうでないかもしれない)と思う。 [これは助けてください](https://stackoverflow.com/a/36796281/2479481) –
元の 'mapDispatchToProps'はOKでした。 'bindActionCreators'は、呼び出しのアクションクリエータを' dispatch() 'にラップします。しかし、もしあなたが 'dispatch()'の仕組みを深く理解していなければ、 'bindActionCreators'を使うべきではないと思います。 。 – stone