When Using Redux Saga with React Get This Error .. Uncaught TypeError: getPosts is not a function
When Using Redux Saga with React Get This Error .. Uncaught TypeError: getPosts is not a function
正在尝试学习如何将 Redux Sagas 与 React 结合使用。举一个简单的例子,但它对我不起作用。
我的 App.js 文件中的代码:
const sagaMiddleware = createSagaMiddleWare();
const store = createStore(
reducers,
applyMiddleware(sagaMiddleware)
)
sagaMiddleware.run(rootSaga);
ReactDOM.render(<Provider store={store}><App /></Provider>, document.getElementById('root'));
动作创作者:
export const getPosts = () => {
return {
type: 'GET_POSTS'
}
};
减速器:
const combineReducers = (state= {}, action) => {
switch (action.type) {
case 'GET_POSTS':
return { ...state, loading: true};
default:
return state;
}
}
export default combineReducers;
我的 Button 组件,其中应调用 onClick 的操作
const ButtonContainer = (getPosts) => (
<button onClick={() => getPosts()}>Get Posts</button>
)
const mapDispatchToProps = {
getPosts: getPosts
}
export default connect(null, mapDispatchToProps)(ButtonContainer);
问题是我在页面加载时遇到此错误。
Uncaught TypeError: getPosts is not a function....
理解错误的意思,它正在获取对象而不是函数,但不确定我需要做什么才能使它工作。
谢谢!
您当前的代码实际上并未将 getPosts 操作分派给您的减速器。
将您的 mapDispatchToProps 更改为:
const mapDispatchToProps = dispatch => {
getPosts: bindActionCreators(getPosts, dispatch)
}
您还需要:
import { bindActionCreators, Dispatch } from "redux"
还将您的 ButtonContainer 更改为:
const ButtonContainer = props => (
<button onClick={() => props.getPosts()}>Get Posts</button>
)
可以在 this 好的文档中找到有关调度的更多信息。
正在尝试学习如何将 Redux Sagas 与 React 结合使用。举一个简单的例子,但它对我不起作用。
我的 App.js 文件中的代码:
const sagaMiddleware = createSagaMiddleWare();
const store = createStore(
reducers,
applyMiddleware(sagaMiddleware)
)
sagaMiddleware.run(rootSaga);
ReactDOM.render(<Provider store={store}><App /></Provider>, document.getElementById('root'));
动作创作者:
export const getPosts = () => {
return {
type: 'GET_POSTS'
}
};
减速器:
const combineReducers = (state= {}, action) => {
switch (action.type) {
case 'GET_POSTS':
return { ...state, loading: true};
default:
return state;
}
}
export default combineReducers;
我的 Button 组件,其中应调用 onClick 的操作
const ButtonContainer = (getPosts) => (
<button onClick={() => getPosts()}>Get Posts</button>
)
const mapDispatchToProps = {
getPosts: getPosts
}
export default connect(null, mapDispatchToProps)(ButtonContainer);
问题是我在页面加载时遇到此错误。
Uncaught TypeError: getPosts is not a function....
理解错误的意思,它正在获取对象而不是函数,但不确定我需要做什么才能使它工作。
谢谢!
您当前的代码实际上并未将 getPosts 操作分派给您的减速器。
将您的 mapDispatchToProps 更改为:
const mapDispatchToProps = dispatch => {
getPosts: bindActionCreators(getPosts, dispatch)
}
您还需要:
import { bindActionCreators, Dispatch } from "redux"
还将您的 ButtonContainer 更改为:
const ButtonContainer = props => (
<button onClick={() => props.getPosts()}>Get Posts</button>
)
可以在 this 好的文档中找到有关调度的更多信息。