首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux / Calling from a action

Redux / Calling from a action
EN

Stack Overflow用户
提问于 2020-01-12 02:51:08
回答 2查看 46关注 0票数 0

如何在不从初始调用传递操作的情况下从操作内部调度操作?我只想删除props.dispatch,但是我不能让它工作。我已经在使用redux-thunk了,而且我还是个新手。我的版本是有效的,但我想它不是最好的。

代码语言:javascript
复制
<Files
    onDrop={file => {
        props.dispatch(addFile(props.dispatch, {id: uuidv4(), file}));
    }}
/>

actions.js:

代码语言:javascript
复制
// 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));
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-12 03:23:15

您可以使用mapDispatchToProps并将其作为第二个参数传递给connect方法。然后你将有调度方法和你的道具。

应该看起来像这样:

代码语言:javascript
复制
const mapDispathToProps = dispatch => ({
    addFileAction: (file) => addFile(dispatch, file)
})
export default connect(null, mapDispathToProps)(Component);

您的addFile操作现在也可以将调度传递给其他操作。

票数 0
EN

Stack Overflow用户

发布于 2020-01-12 20:45:29

如果您使用的是redux-thunk,则您的操作可能如下所示:

代码语言:javascript
复制
// 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方法作为参数传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59697581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档