Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图模拟API响应中的延迟:无法读取属性';然后';未定义的_Javascript_Reactjs_Promise_Mocking_Es6 Promise - Fatal编程技术网

Javascript 试图模拟API响应中的延迟:无法读取属性';然后';未定义的

Javascript 试图模拟API响应中的延迟:无法读取属性';然后';未定义的,javascript,reactjs,promise,mocking,es6-promise,Javascript,Reactjs,Promise,Mocking,Es6 Promise,在我的React应用程序中,我试图在模拟API响应中假装延迟 未捕获的TypeError:无法读取未定义的属性“then” 动作: export const create = newDraft => dispatch => all() .then(() => setTimeout(() => { dispatch({ type: CREATE, newDraft }); return 'Draft created!';

在我的React应用程序中,我试图在模拟API响应中假装延迟

未捕获的TypeError:无法读取未定义的属性“then”

动作:

export const create = newDraft => dispatch => all()
  .then(() => setTimeout(() => {
    dispatch({
      type: CREATE,
      newDraft
    });
    return 'Draft created!';
  }, 2000))
  .catch(() => {
    dispatch({
      type: REQUEST_ERROR,
      payload: apiErrors.BAD_REQUEST
    });
  });
const mapDispatchToProps = dispatch => ({
  create: (newDraft) => { dispatch(create(newDraft)); }
});

export const CreateDraftModalJest = CreateDraftModal;

export default connect(cleanMapStateToProps([
  'user'
]), mapDispatchToProps)(CreateDraftModal);
连接区域:

export const create = newDraft => dispatch => all()
  .then(() => setTimeout(() => {
    dispatch({
      type: CREATE,
      newDraft
    });
    return 'Draft created!';
  }, 2000))
  .catch(() => {
    dispatch({
      type: REQUEST_ERROR,
      payload: apiErrors.BAD_REQUEST
    });
  });
const mapDispatchToProps = dispatch => ({
  create: (newDraft) => { dispatch(create(newDraft)); }
});

export const CreateDraftModalJest = CreateDraftModal;

export default connect(cleanMapStateToProps([
  'user'
]), mapDispatchToProps)(CreateDraftModal);
也尝试了同样的结果
您的
this.props.create()
操作创建者可能未绑定分派,因此无法按预期返回承诺

您是否正确使用了
react redux
connect()

编辑:

您的mapDispatchToProps没有返回承诺。改为这样做:

const mapDispatchToProps = dispatch => ({
  create: (newDraft) => dispatch(create(newDraft)),
});

看起来
all
不会返回承诺。您确定组件中的dispatch正在调用您的操作创建者吗?您是否正确使用connect的mapDispatchToProps?是的,正在调用操作,我在setTimeout中获得了一个日志,发布了我刚刚尝试过的新代码。
。然后(DelayPromise(2000))
不正确。它需要是
。然后(()=>DelayPromise(2000))
。您将传递
.then()
一个它可以稍后调用的函数引用,而不是一个承诺。我刚刚修复了这个问题,Action creator工作的延迟导致我看到状态更新,只有一个。然后在组件中,它不工作,我无法关闭模式。(同一错误)你是mapDispatchToProps没有返回承诺..请参阅我的编辑!就这样!谢谢:D 1分钟!