无法在redux操作中使用getState

时间:2016-11-25 07:19:16

标签: reactjs redux

我无法在redux actions.js中获取getState。以下代码不发布,只在控制台打印'我出去了!'并且没有错误:

Test.jsx:

...
import { testPost } from './actions';

...
onSubmit (e) {
    e.preventDefault();
    testPost({
            todo: 'test'
        });
}

actions.jsx:

export function testPost (todo) {
    console.log('i am out!');

    return function (dispatch, getState) {      
    console.log('i am in!');
    let id = getState().test.id;
    return fetch(`url`, {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            id: id,
            todo: todo
        })
    });         
}

}

请注意,如果我注释掉以下行和硬编码ID,则会很好地发布:

return function (dispatch, getState) {

另外,请告诉我是否正确期待'我在!'在上面的示例代码中打印。

1 个答案:

答案 0 :(得分:0)

您可以将您需要的ID传递给您的操作创建者( testPost ),这样您的操作就不需要了解状态。

例如:

  export function testPost(todo) {
  console.log('i am out!');
  return function(dispatch, id) {
    return fetch(`url`, {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        id: id,
        todo: todo
      })
    });
  }
}

修改

我会看一下我在评论中提到的两个(免费)在线课程,其中第二个课程有一个关于检索数据的部分,但我首先要了解redux(动作,减速器及其管道)在获取数据之前使用更简单的用例。