undefined
不是对象(计算 this.props.dispatch
)这个错误通常出现在使用 React 和 Redux 的应用中。这个错误提示表明 this.props.dispatch
是 undefined
,这意味着你尝试调用 dispatch
方法时,它并不存在于 this.props
中。
这个错误通常由以下几种情况引起:
connect
函数(来自 react-redux
库)时,可能没有正确地将 dispatch
方法映射到组件的 props。mapDispatchToProps
中可能没有正确地返回 dispatch
方法。Provider
组件包裹,并传递 store,那么内部的组件将无法访问到 dispatch
。假设你有一个简单的组件 MyComponent
,你想通过 dispatch
发送一个动作:
import React from 'react';
import { connect } from 'react-redux';
import { myAction } from './actions';
class MyComponent extends React.Component {
handleClick = () => {
this.props.dispatch(myAction());
};
render() {
return <button onClick={this.handleClick}>Dispatch Action</button>;
}
}
// 正确的 mapDispatchToProps
const mapDispatchToProps = (dispatch) => ({
dispatch,
});
export default connect(null, mapDispatchToProps)(MyComponent);
确保你的应用的最顶层有 Provider
组件,并且传递了 store:
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import store from './store';
import App from './App';
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
确保你的组件通过 connect
正确地连接到了 Redux,并且在应用的顶层使用了 Provider
来提供 store。这样,this.props.dispatch
就不会是 undefined
,从而避免这个错误。
领取专属 10元无门槛券
手把手带您无忧上云