Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/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/Redux中对对象数组进行字符串化,并在检索后进行解析?_Javascript_Arrays_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 为什么我需要在React/Redux中对对象数组进行字符串化,并在检索后进行解析?

Javascript 为什么我需要在React/Redux中对对象数组进行字符串化,并在检索后进行解析?,javascript,arrays,reactjs,redux,react-redux,Javascript,Arrays,Reactjs,Redux,React Redux,我不确定这是否是正确的方法,但它正在发挥作用。我不确定这是不是React/Redux的问题,或者只是javascript行为的问题 这是我的REDUX操作: export const getDetectedPersonList = () => { return (dispatch, getState) => { fetch("http://localhost:8080/detectedPersonsListWS") .then(function(r

我不确定这是否是正确的方法,但它正在发挥作用。我不确定这是不是React/Redux的问题,或者只是javascript行为的问题

这是我的REDUX操作:

export const getDetectedPersonList = () => {
  return (dispatch, getState) => {  
    fetch("http://localhost:8080/detectedPersonsListWS")
          .then(function(response) {
            if (response.status >= 400) {
              throw new Error("Bad response from server");
            }
              return response.json();
            })
            .then(function(detections) { 

              var detected = [{"a":1},{"b":2},{"c":3},{"d":4}];

                dispatch({
                  type : GET_DETECTED_PERSON_LIST,
                  payload : JSON.stringify(detected)
                })
             })     
        }
    }
在REACT的表现成分中,我有:

 componentDidMount() {
  this.props.getDetectedPersonList();
 }  

 render() {
    if (typeof this.props.detectedPersonListJson == 'string'){
      console.log(this.props.detectedPersonListJson);
      var json = JSON.parse(this.props.detectedPersonListJson);
      console.log(json); //The array is perfect as created before (detected)
    }  
检测到的数组显然是模拟的(在现实世界中,我希望有一个REST响应),但我想这说明了一个问题,这不是异步操作的问题。 我最大的问题是,我之前在验证道具,我希望有一个数组,但无法直接发送数组,因为我收到:[object object],并被typeof解释为字符串,但它不是。。。如果我以前没有做过JSON.stringify(检测到),那么在做JSON.parse(检测到)时会出现一个错误


有道理吗?要遵循的最佳实践?非常感谢。

您没有,所以可能还有其他问题,比如减速器,您没有包括在内。很明显,现在它将是一个字符串,因为你将它字符串化了。但是没有stringifyint,正如我在问题中所说的那样,它被javascript的typeof函数解释为一个字符串。再说一次:然后还有其他事情发生了。使用
stringify
可以保证它被“解释为字符串”。如果您得到一个硬编码的对象“解释为字符串”,那么您需要包括正在对操作负载执行操作的减速机:如果您发送一个对象,并且它被映射到其他对象,那么其他对象正在发生。React和Redux中绝对没有“自动”功能可以神奇地将有效负载转换为字符串。