Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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
Reactjs 用承诺来回应redux问题,因为我的变量为null_Reactjs_Redux - Fatal编程技术网

Reactjs 用承诺来回应redux问题,因为我的变量为null

Reactjs 用承诺来回应redux问题,因为我的变量为null,reactjs,redux,Reactjs,Redux,我有一个React Redux应用程序,我对promise有问题。首先,我想给你我的代码: 问题是我的dateApi第二次只是“令人惊讶”。我需要做出承诺,但我不知道怎么做 问题:这是我在react前端的方法: ... this.props.handleLastWeek(this.props.dateFrom, this.props.dateTo); // ^^ this returns dataApi ^^ var i = 1; var j = 1;

我有一个React Redux应用程序,我对promise有问题。首先,我想给你我的代码:

问题是我的dateApi第二次只是“令人惊讶”。我需要做出承诺,但我不知道怎么做

问题:这是我在react前端的方法:

...
    this.props.handleLastWeek(this.props.dateFrom, this.props.dateTo);
    // ^^ this returns dataApi ^^

    var i = 1;
    var j = 1;
    var k = 1;
    var l = 0;
    var dateArray = [];
    this.props.dataApi.map(dA => {
    ... // this.props.dataApi is null
减速器:

case GET_DATA_LAST_WEEK:
  return state.set("dataApi", []).set("isLoading", true);

case GET_DATA_LAST_WEEK_SUCCESS:
  return state.set("isLoading", false).set("dataApi", action.response);
这是我的操作:(响应是我的dataApi)

这是我的redux saga函数:

    export function* handleLastWeek() {
  const from = yield select(makeSelectDateFrom());
  const to = yield select(makeSelectDateTo());
  const requestURL = `/api/daydate`;

  try {
    const response = yield call(request, requestURL, {
      method: "POST",
      headers: {
        Authorization: `Bearer ${getToken()}`,
        Accept: "application/json",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        from,
        to
      })
    });

    if (response) {
      yield put(successDataLastWeekAction(response));
    } else {
      yield put(errorDataLastWeekAction("Spróbuj ponownie za moment."));
    }
  } catch (err) {
    yield put(errorDataLastWeekAction(err));
  }
}

其中是
this.props.dataApi.map(dA=>{…//this.props.dataApi为null
调用?从render()?@TyroHunter,在componentDidMount()中调用,但不限于此。我在onClick函数等中使用它。您能否像下面这样记录响应以确保您的api真正响应预期数据:
console.log(响应);if(响应){yield put(successDataLastWeekAction(response));}else{yield put(errorDataLastWeekAction(“Spróbuj ponownie za moment”);}
如果您看到记录的数据,则问题可能与promise无关,而与您的redux有关connections@Tyro,是的。API始终返回真实数据,此问题在promise 100%确定中,然后尝试
console.log(this.props.dataApi)
这次在render方法上,应该至少调用两次,并比较两个日志,您是否看到第二个日志(第二次调用render)中的预期数据?其中是
this.props.dataApi.map(dA=>{…//this.props.dataApi为null
调用?来自render()?@TyroHunter,在componentDidMount()中)但不仅如此。我在onClick函数等中使用它。您是否可以像下面这样记录响应,以确保您的api真正响应预期数据:
console.log(响应);if(响应){yield put(successDataLastWeekAction(响应));}else{yield put(errorDataLastWeekAction(“Spróbuj ponownie za矩”);}
如果您看到记录的数据,则问题可能与promise无关,而与您的redux有关connections@Tyro,是的。API始终返回真实数据,此问题在promise 100%确定中,然后尝试
console.log(this.props.dataApi)
这次在render方法上,应该至少调用两次,并比较两个日志,您是否看到来自第二个日志(第二次调用render)的预期数据?
    export function* handleLastWeek() {
  const from = yield select(makeSelectDateFrom());
  const to = yield select(makeSelectDateTo());
  const requestURL = `/api/daydate`;

  try {
    const response = yield call(request, requestURL, {
      method: "POST",
      headers: {
        Authorization: `Bearer ${getToken()}`,
        Accept: "application/json",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        from,
        to
      })
    });

    if (response) {
      yield put(successDataLastWeekAction(response));
    } else {
      yield put(errorDataLastWeekAction("Spróbuj ponownie za moment."));
    }
  } catch (err) {
    yield put(errorDataLastWeekAction(err));
  }
}