Reduxの使用方法を学習しており、アクションとレデューサーの設定に問題があります。ここに私の設定です:Redux - コンポーネントに正しくリンクされていないレデューサー/アクションクリエーター
アクションはここにある:
export const loginUser = (test) => {
return {
type:'loginUser',
loggedIn:true
}
}
export const toggleRegLog = (test) => {
return {
type:'toggleRegLog',
}
}
レデューサーはここにある:減速の
let initialState = [];
const userAuthReducer = (state = initialState,action) => {
switch (action.type) {
case 'loginUser':
let newState = [...state];
if(action.loggedIn) {
newState = "logged-in";
} else {
newState = "not-logged-in";
}
return newState;
break;
case:'toggleRegLog':
let newState = [...state];
return action.state;
break;
default:
return state;
}
}
export default userAuthReducer;
コンビネーションは、インデックスと呼ばれるファイルにここにある:
import {combineReducers} from 'redux';
import userAuthReducer from './reducers/userAuthReducer';
function lastAction(state = null, action) {
return action;
}
export default combineReducers({
userAuthReducer
});
デモコンポーネント:
import React, {Component} from 'react';
import {connect} from 'react-redux';
import { bindActionCreators } from 'redux';
import * as authActions from './actions/userAuthActions';
class App extends Component {
constructor(props) {
super(props);
}
componentDidMount() {
console.log(this.props)
}
render() {
return (
<div>
<button onClick={this.props.loginUser()}></button>
</div>
);
}
const mapStateToProps = (state) => {
return {
userAuthReducer:state.userAuthReducer
};
};
const mapDispatchToProps = (dispatch) => {
return bindActionCreators(authActions,dispatch);
};
export default connect(mapStateToProps,mapDispatchToProps)(App);
}
私は以前より基本的な方法で作業していましたが、チュートリアルをいくつか見て、別のアクションクリエイターを導入することを決めました(つまり、コンポーネントからリデューサーに直接ディスパッチするだけでなく)それはもはや動かないようです。私のコンポーネントのconsole.log(this.props)
は、アクションとして機能を返し、状態は未定義です。
誰でもどこが間違っているのでしょうか?
おかげで、私はエラーを取得しています。たぶん私は正しい方法でアクションをディスパッチしていないでしょうか? –
あなたのonClickハンドラのコードを ' 'この変更で解決できない場合は、コンソールに表示されているものを投稿できますか? – palsrealm
同じエラーを返します! –