Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 解析React操作中的JSON响应数据_Javascript_Json_Reactjs_Promise_Redux - Fatal编程技术网

Javascript 解析React操作中的JSON响应数据

Javascript 解析React操作中的JSON响应数据,javascript,json,reactjs,promise,redux,Javascript,Json,Reactjs,Promise,Redux,我正在调用我的服务器,从第三方API(Yelp)获取一些json数据。我正在使用axios和redux promise在redux中设置状态,以便在react中使用它。返回的数据让我很困惑 我想将状态设置为从yelpapi返回的业务数据数组。目前,如果我传入一个基本字符串作为有效负载,则此操作有效。我不确定如何从api响应中获取JSON数据,然后在react中从redux状态对其进行操作 下面是数据的样子 这是我的动作js文件 我为我的解决方案找到了一个修复方案,其中包括一些笨拙的修补和修复我

我正在调用我的服务器,从第三方API(Yelp)获取一些json数据。我正在使用axios和redux promise在redux中设置状态,以便在react中使用它。返回的数据让我很困惑

我想将状态设置为从yelpapi返回的业务数据数组。目前,如果我传入一个基本字符串作为有效负载,则此操作有效。我不确定如何从api响应中获取JSON数据,然后在react中从redux状态对其进行操作

下面是数据的样子

这是我的动作js文件
我为我的解决方案找到了一个修复方案,其中包括一些笨拙的修补和修复我端的bug

修复1-更新存储 我添加了thunk,效果很好

  const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
  const store = createStore(reducers, composeEnhancers(
    applyMiddleware(ReduxThunk)
  ));
修复2-将thunk集成到行动中 我在一个初始函数中解析了json,然后将其返回给发送给reducer的操作

import axios from 'axios';

export const ZIP_CODE = 'ZIP_CODE';

const ROOT_URL = 'http://www.localhost:3000/v1/location/1/1/2/4000'

function getBusinesses(res) {   

    return {
        type: ZIP_CODE,
        payload: res['data']['businesses']
    }
}

export function updateZip(zipCode) {
  return function(dispatch) {
    axios.get(ROOT_URL)
      .then((response) => {
        dispatch(getBusinesses(response))
      })
  }
}

返回的数据让我感到困惑
-以何种方式?@JaromandaX我不确定如何正确地将其传递给有效负载。我将其传递给有效负载,最终结果是promise对象。。我构建的函数只返回项目数组,但仍然没有返回任何内容是的,但是调用
updateZip
必须能够处理
payload
是一个承诺这一事实-恐怕除了我之外,我对redux和reduce promise的了解还不够。很抱歉
import axios from 'axios';

export const ZIP_CODE = 'ZIP_CODE';

const ROOT_URL = 'http://www.localhost:3000/v1/location/1/1/2/4000'

function getBusinesses(res) {   

    return {
        type: ZIP_CODE,
        payload: res['data']['businesses']
    }
}

export function updateZip(zipCode) {
  return function(dispatch) {
    axios.get(ROOT_URL)
      .then((response) => {
        dispatch(getBusinesses(response))
      })
  }
}