我想派遣一个动作时遇到TypeError(TypeError:Object(...)不是一个函数)。我没有使用任何中间件,也不知道该怎么办。我昨天已经有这个错误,但是以某种方式设法解决了(我不知道我是怎么做到的)
这是App.js:
import React from "react";
import { store } from "../store";
import { withdrawMoney} from "../actions";
const App = () => {
return (
<div className="app">
<div className="card">
<div className="card-header">
Welcome to your bank account
</div>
<div className="card-body">
<h1>Hello, {store.getState().name}!</h1>
<ul className="list-group">
<li className="list-group-item">
<h4>Your total amount:</h4>
{store.getState().balance}
</li>
</ul>
<button className="btn btn-primary card-link" data-amount="5000" onClick={dispatchBtnAction}>Withdraw $5,000</button>
<button className="btn btn-primary card-link" data-amount="10000" onClick={dispatchBtnAction}>Witdhraw $10,000</button>
</div>
</div>
</div>
);
}
function dispatchBtnAction(e) {
store.dispatch(withdrawMoney(e.target.dataset.amount));
}
export default App;
Run Code Online (Sandbox Code Playgroud)
这是动作创建者:
function withdrawMoney(amount) {
return {
type: "ADD_TODO",
amount
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要,这里是减速器:
export default (state, action) => {
console.log(action);
return state
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我是redux的新手,但是我想知道在分派操作时我总是犯什么错误。谢谢
另一个会导致这个错误的微妙错误是我试图做的,不要不小心这样做:
import React, { useSelector, useState ... } from 'react'
Run Code Online (Sandbox Code Playgroud)
它应该是:
import React, { useState } from 'react'
import { useSelector } from 'react-redux'
Run Code Online (Sandbox Code Playgroud)
我相信问题是您没有导出withdrawMoney函数,因此您无法在尝试导入的组件中调用它。
尝试:
export function withdrawMoney(amount) {
return {
type: "ADD_TODO",
amount
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8863 次 |
| 最近记录: |