我是redux / react的新手。我做一个简单的rest调用,通过触发一个动作来获取一些细节。但是我收到以下错误
BSC.js?d219:24 Uncaught TypeError:
this.props.fb is not a function.
我的代码如下 动作-
export function fb(){
return dispatch => {
dispatch({
type: SUCCESS,
payload: {"key1":"value1","key2":"value2"}
})
}
}
容器-
import {connect} from 'react-redux';
import React, { Component } from 'react';
import {fb} from '../../actions/b/bSA';
export class BSC extends React.Component {
componentDidMount(){
this.props.fb();
}
render(){
return <div></div>
}
}
export default connect(null, {fB})(BSC);
减速器
const initialState = {
loading: true,
error: null,
};
export default function bSR(state = initialState, action) {
switch(action.type) {
case SUCCESS:
return {
...state,
loading: false,
};
default:
// ALWAYS have a default case in a reducer
return state;
}
}
可能是什么问题?
答案 0 :(得分:0)
只是吐气,但我相信您缺少实际上会附加该功能的MapStateToProps函数。
答案 1 :(得分:0)
您需要在容器组件文件中声明此方法。
const mapDispatchToProps = dispatch => {
return bindActionCreators({
fb
}, dispatch);
};
其中bindActionCreators
是:
import {bindActionCreators} from "redux";
现在将其传递给连接方法:
export default connect(null, mapDispatchToProps)(BSC);
这里发生的是mapDispatchToProps
函数将dispatch
作为函数参数,必须将其传递给动作创建者才能实际分派动作。在这里bindActionCreators
以dispatch
作为参数调用您的操作创建者方法,您将能够在其中分派所需的操作。