React-Redux 不调度动作类型
React-Redux not dispatching action type
这是react/redux申请。
这是我要完成的基本精简版本。 showFolder() 生成一个文件夹列表和一个按钮以单击它从 FolderActions.js 调用 removeFolder 操作的位置。该按钮有效并将调用 FolderActions.js 中的函数,但不会分派该类型。这些函数可以正常工作,因为我可以看到 console.log 消息,但不会使用 redux..
分派类型
我有一种强烈的感觉,这是我调用函数的方式,但我现在迷路了
import {
addFolder,
getFolder,
removeFolder,
} from "../../../actions/FolderActions";
class Folders extends Component {
onRemoveFolder = (e,id) => {
e.preventDefault();
console.log(id);
this.props.removeFolder(id);
};
showFolders = () => {
return (
<ul>
{this.props.folder.map((key, index) => (
<form onSubmit={(e) => this.onRemoveFolder(e,key._id)}>
<input type="submit"></input>
</form>
))}
</ul>
);
};
render() {
let { isShown } = this.state;
return (
<div>
<div className="folder_names">{this.showFolders()}</div>
</div>
);
}
}
const mapStateToProps = state => {
return {
userId: state.auth.user._id,
folder: state.folder.data
};
};
export default connect(mapStateToProps, {removeFolder,addFolder,getFolder})(
Folders
);
FolderActions.js
export const removeFolder = id => dispatch => {
console.log("called")
axios
.delete(`api/folders/${id}`)
.then(res =>
dispatch({
type: DELETE_FOLDER,
payload: id
})
)
.catch(err => {
console.log(err);
});
};
我觉得你的函数调用很奇怪...
您可以尝试定义一个适当的 mapDispatchToProps
并在其中而不是在您的函数中调用 dispatch
吗?
const mapDispatchToProps = dispatch => ({
removeFolder: (id) => dispatch( removeFolder(id) ),
addFolder: (id) => dispatch( addFolder(id) ),
getFolder: (id) => dispatch( getFolder(id) ),
})
export default connect(mapStateToProps, mapDispatchToProps)(
Folders
);
export const removeFolder = id => {
// code block
};
我知道这更像是您可能希望的返工,但它有效吗?
如果我错了请纠正我,但我的服务器从未发送过响应。
因为服务器从未发送过响应,所以当我发出请求时,res 不正确,因此无法分派类型和负载。
抱歉浪费了大家的时间!
这是react/redux申请。 这是我要完成的基本精简版本。 showFolder() 生成一个文件夹列表和一个按钮以单击它从 FolderActions.js 调用 removeFolder 操作的位置。该按钮有效并将调用 FolderActions.js 中的函数,但不会分派该类型。这些函数可以正常工作,因为我可以看到 console.log 消息,但不会使用 redux..
分派类型我有一种强烈的感觉,这是我调用函数的方式,但我现在迷路了
import {
addFolder,
getFolder,
removeFolder,
} from "../../../actions/FolderActions";
class Folders extends Component {
onRemoveFolder = (e,id) => {
e.preventDefault();
console.log(id);
this.props.removeFolder(id);
};
showFolders = () => {
return (
<ul>
{this.props.folder.map((key, index) => (
<form onSubmit={(e) => this.onRemoveFolder(e,key._id)}>
<input type="submit"></input>
</form>
))}
</ul>
);
};
render() {
let { isShown } = this.state;
return (
<div>
<div className="folder_names">{this.showFolders()}</div>
</div>
);
}
}
const mapStateToProps = state => {
return {
userId: state.auth.user._id,
folder: state.folder.data
};
};
export default connect(mapStateToProps, {removeFolder,addFolder,getFolder})(
Folders
);
FolderActions.js
export const removeFolder = id => dispatch => {
console.log("called")
axios
.delete(`api/folders/${id}`)
.then(res =>
dispatch({
type: DELETE_FOLDER,
payload: id
})
)
.catch(err => {
console.log(err);
});
};
我觉得你的函数调用很奇怪...
您可以尝试定义一个适当的 mapDispatchToProps
并在其中而不是在您的函数中调用 dispatch
吗?
const mapDispatchToProps = dispatch => ({
removeFolder: (id) => dispatch( removeFolder(id) ),
addFolder: (id) => dispatch( addFolder(id) ),
getFolder: (id) => dispatch( getFolder(id) ),
})
export default connect(mapStateToProps, mapDispatchToProps)(
Folders
);
export const removeFolder = id => {
// code block
};
我知道这更像是您可能希望的返工,但它有效吗?
如果我错了请纠正我,但我的服务器从未发送过响应。
因为服务器从未发送过响应,所以当我发出请求时,res 不正确,因此无法分派类型和负载。
抱歉浪费了大家的时间!