如何在不从初始调用传递操作的情况下从操作内部调度操作?我只想删除props.dispatch,但是我不能让它工作。我已经在使用redux-thunk了,而且我还是个新手。我的版本是有效的,但我想它不是最好的。
<Files
onDrop={file => {
props.dispatch(addFile(props.dispatch, {id: uuidv4(), file}));
}}
/>actions.js:
// addFile
export function addFile(
dispatch,
{
id = uuidv4(),
file = [],
} = {}
) {
doSomething(dispatch, id);
return {
type: 'ADD_FILE',
payload: {
id,
file,
},
};
}
// doSomething
function doSomething(dispatch, id) {
dispatch(callOtherAction(id));
}发布于 2020-01-12 03:23:15
您可以使用mapDispatchToProps并将其作为第二个参数传递给connect方法。然后你将有调度方法和你的道具。
应该看起来像这样:
const mapDispathToProps = dispatch => ({
addFileAction: (file) => addFile(dispatch, file)
})
export default connect(null, mapDispathToProps)(Component);您的addFile操作现在也可以将调度传递给其他操作。
发布于 2020-01-12 20:45:29
如果您使用的是redux-thunk,则您的操作可能如下所示:
// actions.js
export function addFile(id = uuidv4(), file = []) {
return dispatch => {
dispatch(doSomething(id));
dispatch({
type: 'ADD_FILE',
payload: {
id,
file,
},
});
}
}
function doSomething(id) {
return dispatch => {
dispatch(callOtherAction(id));
}
}
// component.js
import { addFile } from './actions.js';
const YourComponent = ({ addFile }) => <button onClick={() => addFile(id, file)}>Add File</button>;
export default connect(null, { addFile })(YourComponent)不需要将dispatch方法作为参数传递。
https://stackoverflow.com/questions/59697581
复制相似问题